我有一个长文本,其键值对由一个字符分隔,并且'•' (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@#$
答案 0 :(得分:2)
它不匹配第二个•
,因为它不合理地匹配,并且它没有一个好的结束点。您可以尝试不匹配的匹配到关键名称所在的位置:
(\w+)=(.*?)(?=•\w+=|$)
\w
=> [a-zA-Z0-9_]
(?=•\w+=|$)
寻找键名或输入字符串结尾的正向前瞻