负先行正则表达式仍然匹配字符串
negative lookahead regex still matching string
所以我有这个正则表达式
(?!path1\/path2)
然而,这最终会正确匹配字符串 'path1/path2',即使我不希望任何具有 path1/path2 的字符串匹配
我做错了什么?
您应该使用 ^
锚定此前瞻并添加 .*
以确保我们检查没有换行符的整个字符串:
^(?!.*path1\/path2)
字符串锚点的开头告诉正则表达式引擎开始寻找开头的模式仅。在您的正则表达式中,它在第一个位置寻找该字符串,然后在第二个位置寻找匹配项。
现在,简单来说,^(?!.*path1\/path2)
匹配任何不包含 path1/path2
.
的字符串
所以我有这个正则表达式
(?!path1\/path2)
然而,这最终会正确匹配字符串 'path1/path2',即使我不希望任何具有 path1/path2 的字符串匹配
我做错了什么?
您应该使用 ^
锚定此前瞻并添加 .*
以确保我们检查没有换行符的整个字符串:
^(?!.*path1\/path2)
字符串锚点的开头告诉正则表达式引擎开始寻找开头的模式仅。在您的正则表达式中,它在第一个位置寻找该字符串,然后在第二个位置寻找匹配项。
现在,简单来说,^(?!.*path1\/path2)
匹配任何不包含 path1/path2
.