python regex [.] +应该表示任何单个或重复的字符

and*_*dio 1 python regex

x='andi'
print re.search('an[.]+',x)
Run Code Online (Sandbox Code Playgroud)

它回来了None.它是否匹配字符串.在文档中,.(点)可以表示任何字符.并且+意味着重复1次或更多次.所以[.]+,它应该d在字符串中匹配.

谁能解释一下?为什么会回来None?

anu*_*ava 5

当你使用:

print re.search('an[.]+', x)
Run Code Online (Sandbox Code Playgroud)

它匹配文字点,因为点在里面,[ ]即特殊正则表达式元字符松散其特殊含义的字符类.

你应该使用:

print re.search('an.+', x)
Run Code Online (Sandbox Code Playgroud)

例:

>>> print re.search('an.+', x).group()
andi
Run Code Online (Sandbox Code Playgroud)

  • 文献引用:[按照`[]`的`re`文档](https://docs.python.org/3/library/re.html#regular-expression-syntax):"特殊字符在内部失去特殊含义例如,`[(+*)]`将匹配任何文字字符''('`,`'+'`,`'*'或`')'`." (注意,字符类,例如`\ w`仍然具有特殊含义,它只是失去特殊含义的特殊字符). (3认同)