是否可以在正则表达式中使用与NOT操作等效的内容,以便仅在字符串在给定位置中不包含某个字符时匹配该字符串?
我看到元字符说^可能意味着“否定一个类”,但我很难找到它的使用示例。而且这个特殊的字符在字符串的开头是不明确的,所以它有点令人困惑。
答案 0 :(得分:7)
是的,它们被称为前瞻性否定断言,例如some_re(?!not_on_my_watch)
您可能也对以下内容感兴趣:
(?<!not_even_before_my_watch)
[^\d\sa-z]
您可能还想检查亲戚pcre/php documentation for assertions 看看你是否发现其他有趣的东西。
请注意:否定断言 将匹配您的意愿,在字符串中的位置,您没有想到。做好准备:
.*?
答案 1 :(得分:5)
'foo[^b]ar'
匹配任何内容均以foo
开头,以ar
但foobar
结尾。所以它否定了[^b]
类,它也可以是一个字符列表(并且使用范围被接受为:[^b-d]
跳过b,c,d)。
答案 2 :(得分:3)
特定字符(例如x
)不在特定位置(例如位置5)的正则表达式为:
^.{4}[^x]
某个字符的正则表达式(例如x
)不是任何地方:
^(?!.*x)