2008-12-10 37 views
6

我使用re.findall()来提取一个HTML文件的一些版本号:Python的正则表达式的findall数字和点

>>> 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'] 

任何人都可以提出一个更好的正则表达式来使用? :)

回答

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

,或者短一点:

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

顺便说一句 - 你不能逃脱点在字符类:

[\.0-9] // matches: 0 1 2 3 4 5 6 7 8 9 . \ 
[.0-9] // matches: 0 1 2 3 4 5 6 7 8 9 . 
+0

伟大的作品,非常感谢! – Ashy 2008-12-10 15:42:25