11

re.findall() を使用して、HTML ファイルからいくつかのバージョン番号を抽出しています。

>>> import re
>>> text = "<table><td><a href=\"url\">Test0.2.1.zip</a></td><td>Test0.2.1</td></table> Test0.2.1"
>>> re.findall("Test([\.0-9]*)", text)
['0.2.1.', '0.2.1', '0.2.1']

しかし、ドットで終わらないものだけを取得したいと思います。ファイル名が常に .zip であるとは限らないため、.zip を正規表現に貼り付けることはできません。

私はで終わりたい:

['0.2.1', '0.2.1']

誰かが使用するより良い正規表現を提案できますか? :)

4

1 に答える 1

21
re.findall(r"Test([0-9.]*[0-9]+)", text)

または、少し短く:

re.findall(r"Test([\d.]*\d+)", text)

ところで、文字クラスではドットをエスケープする必要はありません。の内部[].は特別な意味はなく、文字通りのドットに一致するだけです。エスケープしても効果はありません。

于 2008-12-10T15:36:07.800 に答える