Regex 如何解析字符串中的键值对?

Regex How do I parse the Key Value pair in a string?

我正在尝试进行高级搜索,我想使用要搜索的字段来缩小搜索字符串的范围。

示例: 文件名:"\temp location\files\here" fileType:html

这应该给我以下组:

如何解析包含 space 引号内的值的键值对?

到目前为止我有正则表达式: (\w+)\s?:\s?([^\s]+)

这是我目前所拥有的示例:

https://regex101.com/r/dJ65e2/3

更新:我已经弄明白了,答案在:

如果您知道第一个匹配组是引号而第二个匹配组不在引号中,您可以使用两个正则表达式分别查找任何一对。请注意,这两个都希望密钥是一个单词。

(\w+)\s?:\s?"([ \S]*?)" 将为您提供一组包含括号前的任何单词,以及一组返回引号中的任何内容。

(\w+)\s?:\s?([^"\s]\S*[^"]) 将为您提供一个包含括号前任何单词的组,以及一个返回引号中 not 的任何单词的组。

试试看 here and here.

编辑:您可以使用 | 运算符同时搜索两者。

(\w+)\s?:\s?"([ \S]*?)"|(\w+)\s?:\s?([^"\s]\S*[^"])

Try it here.

我认为这应该可以解决问题:https://regex101.com/r/U1zvEd/2

/(\w+)\s?:\s?[\"|']?([^\"|'|\s]+)/g