有人可以向我解释为什么模式(负向前瞻)
/aa.+(?!cc)/g
匹配所有4行
aabbcc aabb aabbcc aabb
虽然我预计只会匹配以下两行:
aabbcc aabb aabbcc aabb
模式(正向前瞻):
/aa.+(?=cc)/g
只匹配2行:
aabbcc aabb aabbcc aabb
正如我所想的那样?
我使用的是PCRE风味的RegEx引擎。
答案 0 :(得分:4)
答案 1 :(得分:3)
因为此模式.+
中的aa.+(?!cc)
匹配所有字符到最后。由于最后一个字符串cc
不存在,因此该正则表达式匹配所有上述字符串。
aa(?!.*cc).+
修改上面的正则表达式以匹配第2行和第4行。 (?!.*cc)
否定前瞻断言,后面的字符串中不会出现字符串cc
,这些字符串将使用.+
模式进行匹配。