键值对 - 正则表达式

时间:2018-05-23 08:18:08

标签: regex

我有一个长文本,其键值对由一个字符分隔,并且'•' (ascii 7) 密钥必须是英文字母,数字和下划线 - 值可以是所有内容(也不是字母的ascii)..

我遇到的问题是该值可能包含'•'作为其价值的一部分。然后我们需要将其包含在内,并且匹配应该是最后一次'•'那场比赛。

管理这样做,但遗憾的是它没有解决我的问题。

([A-Za-z0-9_]+)=((.*?)+)•

测试字符串:MY_KEY_1=○•◘♠ ♥•MY_KEY_2=as dfa sd f@#$•

预期结果:2个匹配MY_KEY_1=○•◘♠ ♥(不是MY_KEY_1=○),MY_KEY_2=as dfa sd f@#$

1 个答案:

答案 0 :(得分:2)

它不匹配第二个,因为它不合理地匹配,并且它没有一个好的结束点。您可以尝试不匹配的匹配到关键名称所在的位置:

(\w+)=(.*?)(?=•\w+=|$)
  • \w => [a-zA-Z0-9_]

  • (?=•\w+=|$)寻找键名或输入字符串结尾的正向前瞻

Live demo