正则表达式提取数字组

时间:2011-06-08 09:43:07

标签: c# javascript asp.net python regex

我有简单的HTML代码:

<span class="someclass" title="4.5 stars"></span>

或者可能是:

<span class="someclass" title="5 stars"></span>

我使用了((\d+\.\d+)|(\d+)) star,但它提取了3组,我需要一组数值。

如何在一个组中使用Regex在两个字符串中提取4.5和5?

谢谢!

3 个答案:

答案 0 :(得分:4)

尝试删除内括号:

(\d+\.\d+|\d+) star

此外,您可能希望考虑使用HTML解析器首先提取属性,而不是将正则表达式直接应用于原始HTML。

答案 1 :(得分:1)

你可以通过在这样的开始括号之后添加?:来使群组不被捕捉

((?:\d+\.\d+)|(?:\d+)) star

但在你的情况下不需要你的内括号。

您可以将表达式重写为

(\d+(?:\.\d+)?) star

答案 2 :(得分:0)

在python中可以这样做:

import re

txt = '<span class="someclass" title="4.5 stars"></span>, <span class="someclass" title="5 stars"></span>'
re.findall(r'\d+[.]\d+|\d+', txt)

['4.5', '5']