是否可以在正则表达式中使用与 NOT 操作等效的东西,以便仅当字符串在给定位置不包含某个字符时才匹配该字符串?
我看到元字符说 ^ 可能意味着“否定一个类”,但我很难找到它的使用示例。而且那个特定的字符与字符串的开头是模棱两可的,所以它也有点混乱。
是否可以在正则表达式中使用与 NOT 操作等效的东西,以便仅当字符串在给定位置不包含某个字符时才匹配该字符串?
我看到元字符说 ^ 可能意味着“否定一个类”,但我很难找到它的使用示例。而且那个特定的字符与字符串的开头是模棱两可的,所以它也有点混乱。
是的,它们被称为前瞻性否定断言,例如some_re(?!not_on_my_watch)
你也可能对此有兴趣:
(?<!not_even_before_my_watch)
[^\d\sa-z]
您可能还想查看相关的pcre/php 文档中的断言。
看看你是否发现其他一些有趣的东西。
请注意:否定断言可能 会与您的意愿相匹配,在字符串中的位置,您没有想到。准备好:
'foo[^b]ar'
将匹配以but开头foo
和结尾的任何内容。所以它否定了类,它也可以是一个字符列表(并且接受使用范围,例如:跳过 b、c、d)。ar
foobar
[^b]
[^b-d]
某个字符(例如x
)不在特定位置(例如位置 5)的正则表达式是:
^.{4}[^x]
某个字符(例如x
)不在任何地方的正则表达式是:
^(?!.*x)