我有简单的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?
谢谢!
答案 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']