Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python正则表达式findall数和点_Python_Regex_Findall - Fatal编程技术网

Python正则表达式findall数和点

Python正则表达式findall数和点,python,regex,findall,Python,Regex,Findall,我正在使用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]

我正在使用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']
有人能推荐一个更好的正则表达式吗?:)

或者,稍微短一点:

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

顺便说一下,在字符类中不需要转义圆点。在
[]
内部,
没有特殊意义,它只匹配一个文字点。转义它没有任何效果。

如果数字可以大于9,它可能应该是\d+,它应该是r“Test([\d.]*\d+)”--\d在字符串中没有任何意义,因此它可以工作,但通常不依赖于它是一种好的做法。如果您想稍微有点限制(例如拒绝1..2),可以执行r“Test(\d*(?:\。\d+)”
re.findall(r"Test([0-9.]*[0-9]+)", text)
re.findall(r"Test([\d.]*\d+)", text)