【发布时间】:2019-08-13 22:29:33
【问题描述】:
考虑以下测试数据:
x.foo,x.bar
y.foo,y.bar
yy.foo,yy.bar
x.foo,y.bar
y.foo,x.bar
yy.foo,x.bar
x.foo,yy.bar
yy.foo,y.bar
y.foo,yy.bar
我正在尝试编写一个正则表达式,其中.foo 之前的字符串和.bar 之前的字符串彼此不同。前三项不应匹配。其他六个应该。
这主要是有效的:
^(.+?)\.foo,(?!\1)(.+?)\.bar$
但是,它错过了最后一个,因为 y 在匹配组 1 中,因此 yy 在匹配组 2 中不匹配。
互动:https://regex101.com/r/Pv5062/1
如何修改负前瞻模式以使最后一项也匹配?
【问题讨论】:
-
^(.+?)\.foo,(?!\1\.)(.+?)\.bar$
标签: regex pcre regex-lookarounds