使用正则表达式匹配特定数据

时间:2016-12-19 06:41:04

标签: python regex

在Python中使用正则表达式,尝试解析下面的数据。

数据 thing1 =

href="quote.ashx?t=JBL&amp;ty=c&amp;p=d&amp;b=1">4.47B</a>, <a 
t=JBL&amp;ty=c&amp;p=d&amp;b=1">18.35</a>, <a class="screener-link" 
style="color:#008800;">24.15</span></a>, <a class="screener-link" 
style="color:#008800;">11.96%</span></a>, <a class="screener-link" 
href="quote.ashx?t=JBL&amp;ty=c&amp;p=d&amp;b=1">16,932,307</a>

正则表达式

pattern = "\b\d+(?:\.\d+)"
match = re.findall(pattern,thing1)
print(match)

该表达式匹配所有十进制数Here

我得到的结果是预期的......

['4.47', '18.35', '24.15', '11.96']

但我只想要24.15。数据中是否有任何匹配的格式会产生这种结果?

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

HTML和正则表达式不是好朋友,我强烈建议您改用HTML解析器。

如果您坚持使用正则表达式,则应该更具体地选择相关模式。由于你想要提取的数字没有什么特别之处(它们看起来都有相同的模式 - 前后),你可以尝试类似的东西:

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

在您的示例中specific_text可以是<span style=\"color.*?>(此处您将获得两个结果,第一个是您正在寻找的结果)。