负前瞻正则表达式仍然匹配字符串

时间:2015-08-17 21:55:57

标签: regex regex-negation regex-lookarounds

所以我有这个正则表达式

(?!path1\/path2)

然而,最终匹配字符串' path1 / path2'即使我不想要任何与path1 / path2相匹配的字符串

,也要正确

我做错了什么?

https://regex101.com/r/mL3qM5/1

1 个答案:

答案 0 :(得分:3)

您应该使用^锚定此前瞻并添加.*以确保我们检查没有换行符号的整个字符串:

^(?!.*path1\/path2)

字符串锚点的开头告诉正则表达式引擎开始在开始开始查找模式。在你的正则表达式中,它在第一个位置寻找那个字符串,然后是第二个位置,它就在那里找到匹配。

现在,简单来说,^(?!.*path1\/path2)匹配任何不包含path1/path2的字符串。