我希望找到一个被捕获的组在字符串后面不再出现的实例:
aaaBbb = CccBbb <- format is valid, skip
aaaDddd = CccDddd <- format is valid, skip
aaaEeee = CccFfff <- format is not valid, match this one only
所以这个正则表达式匹配了我不想匹配的行(https://regex101.com/r/lon87L/1)。
/^ +\w+([A-Z][a-z+]) += +\w+\1$/mg
我在https://www.regular-expressions.info/refadv.html上读到,PHP不支持负向回顾后引用,但其他正则表达式实现可以。因此,像这样的内容会匹配我想要匹配的无效行,但在PHP中不起作用:
/^ +\w+([A-Z][a-z+]) += +\w+(?<!\1)$/mg
除了在 PHP 中匹配所有三行并通过 foreach 循环遍历匹配项之外,还有其他可行的方法吗?
(?>\1(*SKIP)(*FAIL)|\w)+
并匹配反向引用。这可能更快。 - user557597$
。https://regex101.com/r/QuXJLY/1 - user557597