Regex 键值对-正则表达式

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=

我有一个长文本,其中键值对由字符“•”(ascii 7)分隔 键必须是英文字母、数字和下划线-值可以是所有内容(也可以是非字母的ascii)

我的问题是,该值可以包含“•”作为其值的一部分。然后我们需要把它包括在和中,比赛应该是到那场比赛的最后一个“•”为止

设法做到这一点,但遗憾的是,这并不能解决我的问题

([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确信,如果没有混凝土结构存在,这种腐蚀性的价值观将永远不会发生。