【问题标题】:PHP regex - match everything but not exactly one or more wordPHP regex - 匹配所有内容,但不完全匹配一个或多个单词
【发布时间】:2019-01-22 15:03:56
【问题描述】:

我试图找到不完全是一个或多个单词的任何字符串

我的模式

(?!(^ignoreme$)|(^ignoreme2$))

我在找

ignoreme   - no
ignoreme2  - no
ignoremex  - match
ignorem    - match
gnoreme    - match
ignoreme22 - match

但它返回很多空间。怎么做谢谢。 https://regex101.com/r/u4EsNv/1

【问题讨论】:

    标签: php regex


    【解决方案1】:

    您可以使用这个更正的正则表达式:

    ^(?!ignoreme2?$).*$
    

    Updated RegEx Demo

    正则表达式详细信息:

    • ^:开始
    • (?!ignoreme2?$):当我们有 ignoremeignoreme2 直到结束时,负前瞻失败。
    • .*: 再匹配 0 个任意字符
    • $:结束

    请注意,正则表达式 (?!(^ignoreme$)|(^ignoreme2$)) 匹配前 2 个无效案例,因为您已将 ^ 包含在不在外部的否定前瞻表达式中。这会导致正则表达式引擎在第一个字符之后开始匹配以满足前瞻断言。 (您可以在 regex101 中看到突出显示的匹配项)

    【讨论】:

    • 它看起来很酷,但它不是分离的,b/c 我可以添加很多像ignoreme2, ignoreme, top, abc这样的词
    • 当然你可以交替添加它们,例如^(?!(ignoreme2?|top|abc|foo|bar)$).*$
    猜你喜欢
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多