Regex 如何解析字符串中的键值对?
Regex How do I parse the Key Value pair in a string?
我正在尝试进行高级搜索,我想使用要搜索的字段来缩小搜索字符串的范围。
示例:
文件名:"\temp location\files\here" fileType:html
这应该给我以下组:
- 文件名 : \temp location\files\here
- 文件类型 : html
如何解析包含 space 引号内的值的键值对?
到目前为止我有正则表达式:
(\w+)\s?:\s?([^\s]+)
这是我目前所拥有的示例:
https://regex101.com/r/dJ65e2/3
更新:我已经弄明白了,答案在:
如果您知道第一个匹配组是引号而第二个匹配组不在引号中,您可以使用两个正则表达式分别查找任何一对。请注意,这两个都希望密钥是一个单词。
(\w+)\s?:\s?"([ \S]*?)"
将为您提供一组包含括号前的任何单词,以及一组返回引号中的任何内容。
(\w+)\s?:\s?([^"\s]\S*[^"])
将为您提供一个包含括号前任何单词的组,以及一个返回引号中 not 的任何单词的组。
编辑:您可以使用 |
运算符同时搜索两者。
(\w+)\s?:\s?"([ \S]*?)"|(\w+)\s?:\s?([^"\s]\S*[^"])
我认为这应该可以解决问题:https://regex101.com/r/U1zvEd/2
/(\w+)\s?:\s?[\"|']?([^\"|'|\s]+)/g
我正在尝试进行高级搜索,我想使用要搜索的字段来缩小搜索字符串的范围。
示例: 文件名:"\temp location\files\here" fileType:html
这应该给我以下组:
- 文件名 : \temp location\files\here
- 文件类型 : html
如何解析包含 space 引号内的值的键值对?
到目前为止我有正则表达式: (\w+)\s?:\s?([^\s]+)
这是我目前所拥有的示例:
https://regex101.com/r/dJ65e2/3
更新:我已经弄明白了,答案在:
如果您知道第一个匹配组是引号而第二个匹配组不在引号中,您可以使用两个正则表达式分别查找任何一对。请注意,这两个都希望密钥是一个单词。
(\w+)\s?:\s?"([ \S]*?)"
将为您提供一组包含括号前的任何单词,以及一组返回引号中的任何内容。
(\w+)\s?:\s?([^"\s]\S*[^"])
将为您提供一个包含括号前任何单词的组,以及一个返回引号中 not 的任何单词的组。
编辑:您可以使用 |
运算符同时搜索两者。
(\w+)\s?:\s?"([ \S]*?)"|(\w+)\s?:\s?([^"\s]\S*[^"])
我认为这应该可以解决问题:https://regex101.com/r/U1zvEd/2
/(\w+)\s?:\s?[\"|']?([^\"|'|\s]+)/g