代码之家  ›  专栏  ›  技术社区  ›  DeLe

php regex-匹配所有内容,但不完全匹配一个或多个单词

  •  2
  • DeLe  · 技术社区  · 5 年前

    我试图找到任何一个字符串,它不是一个或多个单词

    我的模式

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

    我在寻找

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

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

    1 回复  |  直到 5 年前
        1
  •  6
  •   anubhava    5 年前

    您可以使用这个正确的regex:

    ^(?!ignoreme2?$).*$
    

    Updated RegEx Demo

    正则表达式细节:

    • ^ 开始
    • (?!ignoreme2?$) :当我们有失败的时候,否定的前瞻 ignoreme ignoreme2 一直到结束。
    • .* :再匹配0个字符
    • $ 结束

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