我知道这种类型的问题已经被问了好几次(For example here次或here次),但我的问题似乎不同,因为我找不到解决方案.
假设给我提供了这个字符串:
key=false hotel = trivago foo cool='tr ue' feels="good"
个
(注意每个空格都是故意放在那里的)
我要提取每一对值,因此Key=False就是其中之一.然而,如果一个单词在一些可选的空格后没有"=",我应该返回word=NULL.否则,这是相关的部分,如果单词在符号‘或"之间,我应该保存这些符号之间的任何内容.举一个例子来解释我的意思: 上面的示例旨在返回此映射:
{key=false, hotel=trivago, foo=null, cool=tr ue, feels=good}
个
我已经try 了各种模式来解决上面的问题.就我想要的东西而言,我感觉最接近的是:
([a-zA-Z0-9]+)\s*[= ]+(?![^\"']*[\"'])
个
这个 idea 是:寻找一个数字为([a-zA-Z0-9]+)的单词,后面跟着可选数量的空格.然后查找"=".这部分不是真正的问题(我认为至少...) 这个问题是我想要的一组(2):为了考虑像"东西"或"wo wers"这样的例子,我查阅了上面的链接,并考虑使用否定的前瞻.
我认为这正是我需要的:Group(2)应该包含=符号之后的所有内容.如果有一个",添加字符串中的任何内容,直到我们到达下一个";同样的处理‘.但是,如果没有提到的符号,则在下一个空格停止.
我已经试了好几个小时了,但我不知道还有没有别的.有谁可以帮我?如果您还有任何问题,请随时提问!
编辑:既然我被要求提供更多的例子,下面是:
example with a lot of words. Makes=sense.
应该回来了
{example=null, with=null, a=null, lot=null, of=null, words.=null, Makes=sense.}
另一个例子:
Did=you know that=I like= "cod ing"?
应该回来了
{Did=you, know=null, that=I, like=cod ing?}