Red*_*arf 5 php regex negative-lookbehind
我想找到后面的字符串中没有出现捕获的组的实例:
aaaBbb = CccBbb <- format is valid, skip
aaaDddd = CccDddd <- format is valid, skip
aaaEeee = CccFfff <- format is not valid, match this one only
Run Code Online (Sandbox Code Playgroud)
所以这匹配我不想匹配的行(https://regex101.com/r/lon87L/1)
/^ +\w+([A-Z][a-z+]) += +\w+\1$/mg
Run Code Online (Sandbox Code Playgroud)
我已经在https://www.regular-expressions.info/refadv.html上看到php不支持负面反馈中的反向引用,但正则表达式的其他实现可以.所以像这样的东西会匹配我想要匹配的无效行,但它在php中不起作用:
/^ +\w+([A-Z][a-z+]) += +\w+(?<!\1)$/mg
Run Code Online (Sandbox Code Playgroud)
除了匹配所有三行并循环遍历php foreach中的匹配之外,还有什么可行吗?
尝试使用负向前看而不是向后向后看。它工作得同样好,而且它可以在 PHP 中工作。
^ +\w+([A-Z][a-z]+) += +(?!\w+\1).*$
Run Code Online (Sandbox Code Playgroud)