具有NOT操作的PCRE正则表达式

Jam*_*oux 6 regex

是否可以在正则表达式中使用与NOT操作等效的内容,以便仅在字符串不包含给定位置中的某个字符时匹配该字符串?

我看到元字符说^可能意味着"否定一个类",但我很难找到它的使用示例.并且该特定字符对于字符串的开头是不明确的,因此它也有点令人困惑.

ZJR*_*ZJR 8

是的,他们被称为前瞻性否定断言,例如some_re(?!not_on_my_watch)

你也可能对此有兴趣:

  • 看看背后的负面断言,(?<!not_even_before_my_watch)
  • 和负面的人物类 [^\d\sa-z]

您可能还想检查断言的相对pcre/php文档.
看看你是否发现其他有趣的东西.

请注意:否定断言可能 与您的意愿相匹配,在字符串中的位置,您没有想到.做好准备:


Boh*_*ian 5

某个字符(例如x)不在特定位置(例如位置 5)的正则表达式是:

^.{4}[^x]
Run Code Online (Sandbox Code Playgroud)

某个字符(例如x)不在任何地方的正则表达式是:

^(?!.*x)
Run Code Online (Sandbox Code Playgroud)


Zso*_*kai 5

 'foo[^b]ar'
Run Code Online (Sandbox Code Playgroud)

将匹配任何东西开始foo和结束ar但是foobar.所以它否定了[^b]类,它也可以是一个字符列表(并且使用范围被接受为:[^b-d]跳过b,c,d).