我有以下正则表达式
[,{:](?!\s*"[\w\s,]+")
以及以下测试数据
{" hi ":"hallo", hi : hallo, "hi": hallo,hi: "hallo", hi: { "hallo": wu },hi: "Hallo Trippel, hier, hallo"}
我很困惑为什么我的负面前瞻"Hallo Trippel, hier, hallo"
根本不匹配。他,至少在我看来是这样的,只匹配"Hallo Trippel
。那被丢弃了,然后他继续, hier
作为下一个匹配。参见:
https ://regex101.com/r/w5woLb/1
我知道这是我的正则表达式开头的字符类,从那里开始匹配。但我不明白为什么我的负向前瞻没有“消耗”我希望它消耗的所有内容。它停下来,就像处于懒惰模式一样。
预期:除了最后两场比赛之外,我预期所有比赛都顺利。
看起来您正在尝试匹配双引号外的一个
,
,,字符{
,:
因为您不想匹配最后一对双引号内的 2 个逗号。为此,您可以使用以下正则表达式:
RegEx 演示
细节:
[,{:]
,
:匹配、{
、:
字符中的任意一个(?=...)
:前瞻确保上述字符后有偶数个双引号前瞻和后瞻统称为“环视”,是零长度断言。它们被称为“断言”:它们不使用字符串中的字符,而只断言匹配是否可能。
更多信息