哪个正则expression式运算符意味着“不要”匹配这个字符?
*, ?, +
字符都意味着匹配这个字符。 哪个字符意思是“不”匹配这个? 例子会有所帮助。
您可以使用否定字符类排除某些字符:例如[^abcde]
将匹配除a,b,c,d,e字符之外的任何字符。
可以在字符类中使用shorthands : [\w]
(小写)将匹配任何“单词字符”(字母,数字和下划线), [\W]
(大写字母)将匹配除了单词之外的所有字符字符; 类似地, [\d]
将匹配0-9数字,而[\D]
匹配除了0-9数字之外的任何内容,依此类推。
如果您使用PHP,您可以查看正则expression式字符类文档 。
有两种方式可以说“不匹配”:字符范围和零宽度负向预测/向后看。
前者:不匹配a
, b
, c
或0
: [^a-c0]
后者:匹配除了foo
和bar
之外的任何三个字母的string:
(?!foo|bar).{3}
要么
.{3}(?<!foo|bar)
另外,为你更正: *
?
和+
实际上不匹配任何东西。 他们是重复操作员,并始终遵循匹配的操作员。 因此, a+
手段匹配a
, [a-c0]+
中的一个或多个意味着匹配a
, b
, c
或0
中的一个或多个,而[^a-c0]+
匹配一个或多个不是a
, b
, c
或0
。
[^]
(在[]内 )在正则expression式中是否定的,而^
是“开始string”
[^az]
匹配任何不是从“a”到“z”的单个字符
^[az]
表示string从“a”开始到“z”
参考
^
在字符范围的开始处使用,或负向前视/后视声明。
>>> re.match('[^f]', 'foo') >>> re.match('[^f]', 'bar') <_sre.SRE_Match object at 0x7f8b102ad6b0> >>> re.match('(?!foo)...', 'foo') >>> re.match('(?!foo)...', 'bar') <_sre.SRE_Match object at 0x7f8b0fe70780>