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 回答