Pao*_*fan 69
您可以使用否定字符类来排除某些字符:例如,[^abcde]将匹配除a,b,c,d,e字符之外的任何字符.
您可以在字符类中使用短字而不是指定所有字符:( [\w]小写)将匹配任何"字符"(字母,数字和下划线),[\W](大写)将匹配除字词之外的任何内容; 同样,[\d]匹配0-9位数字,[\D]但匹配0-9位数字以外的任何数字,依此类推.
如果您使用PHP,您可以查看正则表达式字符类文档.
Ama*_*dan 66
有两种方式可以说"不匹配":字符范围和零宽度负向前瞻/后视.
前者:不匹配a,b,c或0:[^a-c0]
后者:匹配任何三个字母的字符串,除了foo和bar:
(?!foo|bar).{3}
要么
.{3}(?<!foo|bar)
另外,对于您的修正:*,?而+实际上并不匹配任何内容.它们是重复运算符,并且始终跟随匹配的运算符.因此,a+可以匹配的一种或多种a,[a-c0]+意味着比赛的一种或多种a,b,c或者0,同时[^a-c0]+将匹配一个或多个的任何不是a,b,c或0.
^ 在字符范围的开头使用,或者使用负向前瞻/后瞻断言.
>>> 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>
Run Code Online (Sandbox Code Playgroud)