假设我想表示\q
(或任何其他特定的"反斜杠转义字符").也就是说,我想匹配\q
但不匹配\\q
,因为后者是反斜杠转义反斜杠后跟a q
.但是\\\q
会匹配,因为它是一个反斜杠逃脱的反斜杠,然后反斜杠逃脱q
.(嗯,它会匹配到\q
最后,而不是\\
在开头.)
我知道我需要一个消极的外观,但他们总是把头抬起来,特别是因为反斜杠本身必须在正则表达式中逃脱.
更新:我新的和改进的Perl正则表达式,支持3个以上的反斜杠:
/(?\\\\)* # an even number of backslashes \\q # Followed by a \q /x;
或者如果你的正则表达式库不支持扩展语法.
/(?\\\\)*\\q/
输出我的测试程序:
q does not match \q does match \\q does not match \\\q does match \\\\q does not match \\\\\q does match
旧版本
/(?:(?