【发布时间】:2015-08-17 21:55:56
【问题描述】:
所以我有这个正则表达式
(?!path1\/path2)
然而,这最终会正确匹配字符串 'path1/path2',即使我不希望任何具有 path1/path2 的字符串匹配
我做错了什么?
【问题讨论】:
标签: regex regex-negation regex-lookarounds
所以我有这个正则表达式
(?!path1\/path2)
然而,这最终会正确匹配字符串 'path1/path2',即使我不希望任何具有 path1/path2 的字符串匹配
我做错了什么?
【问题讨论】:
标签: regex regex-negation regex-lookarounds
您应该使用^ 锚定此前瞻并添加.* 以确保我们检查没有换行符的整个字符串:
^(?!.*path1\/path2)
字符串锚的开头告诉正则表达式引擎开始寻找开头的模式只。在您的正则表达式中,它在第一个位置查找该字符串,然后在第二个位置查找该字符串,并在那里找到匹配项。
现在,简单来说,^(?!.*path1\/path2) 匹配任何不包含path1/path2 的字符串。
【讨论】:
path1/path2 的字符串匹配” - 我读到的意思是不包含 path1/path2 的字符串。您的正则表达式适用于不以它开始的字符串。