【问题标题】:negative lookahead regex still matching string负前瞻正则表达式仍然匹配字符串
【发布时间】:2015-08-17 21:55:56
【问题描述】:

所以我有这个正则表达式

(?!path1\/path2)

然而,这最终会正确匹配字符串 'path1/path2',即使我不希望任何具有 path1/path2 的字符串匹配

我做错了什么?

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

【问题讨论】:

    标签: regex regex-negation regex-lookarounds


    【解决方案1】:

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

    ^(?!.*path1\/path2)
    

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

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

    【讨论】:

    • “我不希望任何具有 path1/path2 的字符串匹配” - 我读到的意思是不包含 path1/path2 的字符串。您的正则表达式适用于不以它开始的字符串。
    • 也许,我应该在凌晨 1:00 停止回答问题:-D 已更新。
    猜你喜欢
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    相关资源
    最近更新 更多