0

我在 python 中的正则表达式匹配遇到了一个意想不到的困难:正如预期的那样:

>>> re.match("r", "r").group() #returns...
"r"

然而:

>>>re.match("r", "$r").group()
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'

有谁知道为什么美元符号在要匹配的字符串中会引起麻烦,以及我该如何解决这个问题?

4

1 回答 1

4

看看re.matchre.search的区别

>>> re.match("r", "$r")    # no match since re.match is equivalent to '^r'
>>> re.search("r", "$r")   # match
<_sre.SRE_Match object at 0x10047d3d8>

re.match 从字符串的开头搜索,因此“r”不匹配“$r”,因为“$r”不以“r”开头。

re.search 扫描字符串,因此它不依赖于字符串的开头。

作为一般形式,您应该以这种方式进行匹配:

match=re.search(pattern, string)
if match
   # you have a match -- get the groups...
else:
   # no match -- deal with that...
于 2012-08-08T23:13:22.607 回答