Regex 键值对-正则表达式
我有一个长文本,其中键值对由字符“•”(ascii 7)分隔 键必须是英文字母、数字和下划线-值可以是所有内容(也可以是非字母的ascii) 我的问题是,该值可以包含“•”作为其值的一部分。然后我们需要把它包括在和中,比赛应该是到那场比赛的最后一个“•”为止 设法做到这一点,但遗憾的是,这并不能解决我的问题Regex 键值对-正则表达式,regex,Regex,我有一个长文本,其中键值对由字符“•”(ascii 7)分隔 键必须是英文字母、数字和下划线-值可以是所有内容(也可以是非字母的ascii) 我的问题是,该值可以包含“•”作为其值的一部分。然后我们需要把它包括在和中,比赛应该是到那场比赛的最后一个“•”为止 设法做到这一点,但遗憾的是,这并不能解决我的问题 ([A-Za-z0-9_]+)=((.*?)+)• 测试字符串:MY\u KEY\u 1=○•◘♠ ♥•MY_KEY_2=作为dfa sd f@#$• 预期结果:2个匹配MY_KEY_1=
([A-Za-z0-9_]+)=((.*?)+)•
测试字符串:MY\u KEY\u 1=○•◘♠ ♥•MY_KEY_2=作为dfa sd f@#$•
预期结果:2个匹配
MY_KEY_1=○•◘♠ ♥代码>(不是MY\u KEY\u 1=○
),MY_KEY_2=作为dfa sd f@#$
它不匹配到第二个•
,因为它不匹配,并且没有一个好的结束点。您可以尝试取消reedy匹配,直到出现以下键名:
(\w+)=(.*?)(?=•\w+=|$)
\w
=>[a-zA-Z0-9.]
(?=•\w+=|$)
查找键名或输入字符串结尾的正向前瞻
试试(.*)+
是贪婪的。外部+击败内部?您的字符串总是以•
作为结束符号结束,还是第二个值的最后一部分?@Kaddath不是值的一部分请指定语言或工具。不同引擎的头像和角色类别各不相同。完美!!请注意,最后一个•
捕获在最后一个值中。在我的其他评论之后,如何处理值中的•f=
之类的事情@卡达,为什么不包括在内f
是键名a s•d f@#$
是它的值。@revo它意味着如果值中可以允许•
,则不应该允许=
,否则它可能会创建一个不需要的新值key@Kaddath也许OP确信,如果没有混凝土结构存在,这种腐蚀性的价值观将永远不会发生。