2016-03-01 61 views
1
x='andi' 
print re.search('an[.]+',x) 

它返回None。它是否假设匹配字符串。 在文档中,.(点)可以表示任何字符。并且+意味着1次或更多次重复。因此在[.]+中,它应该与字符串中的d匹配。python正则表达式[。] +应该表示任何单个或重复字符

任何人都可以解释吗?为什么它会返回None

+1

你觉得呢'[]'呢? – njzk2

回答

5

当你使用:

print re.search('an[.]+', x) 

它匹配字面点因为点是内部[ ]即字符类,其中特殊的正则表达式元字符失去其特殊的意义。

您应该使用:

print re.search('an.+', x) 

例子:

>>> print re.search('an.+', x).group() 
andi 
+3

文件引用:[按照'[]']的're'文档(https://docs.python.org/3/library/re.html#regular-expression-syntax):“特殊字符失去其特殊含义例如,'[(+ *)]'将匹配任何文字字符''('',''+'',''''或'')''。 (请注意,字符类,例如'\ w'仍然有特殊含义,它只是特殊的单个字符,失去了特殊的含义)。 – ShadowRanger

+1

@anubhava:对不起,迟到的回复。这是完美的人。我用[]不在正确的地方。非常感谢。 :-) – andio