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 に答える