繁体   English   中英

简单正则表达式问题

[英]Simple Regular expression question

我有一个格式错误的大型测试HTML文档,我需要从中获取数字:

我想了解主要比例。 我正在使用以下正则表达式:

(?<=Primary ratio</TD><TD>--</TD><TD>).*(?=</TD>)

在此字符串上:

Primary ratio</TD><TD>--</TD><TD>10.52</TD><TD>14.97</TD><TD></TD></TR><TR align='right'><TD align='left'>Flip Ratio</TD><TD>-122.81</TD><TD>1.13</TD><TD>1.50</TD><TD></TD></TR><TR align='right'><TD align='left'>Secondary Ratio</TD><TD>--</TD><TD>0.70</TD><TD>0.70</TD><TD></TD></TR><TR align='right'><TD align='left'>RM Ratio</TD><TD>--</TD><TD>2.02</TD>

但是我得到的结果是:

10.52</TD><TD>14.97</TD><TD></TD></TR><TR align='right'><TD align='left'>Flip Ra
tio</TD><TD>-122.81</TD><TD>1.13</TD><TD>1.50</TD><TD></TD></TR><TR align='right
'><TD align='left'>Secondary Ratio</TD><TD>--</TD><TD>0.70</TD><TD>0.70</TD><TD>
</TD></TR><TR align='right'><TD align='left'>RM Ratio</TD><TD>--</TD><TD>2.02

我不需要,我只想要第一个标签中的10.52。

我的意思是,它完美地找到了字符串的开头,但没有找到第一个。 我究竟做错了什么?

使用HTML解析器而不是RegEx- HTML Agility Pack是一个不错的选择。

通常,正则表达式不适合与HTML一起使用,因为HTML不是正则语言。 如果您正在使用来自不同来源的HTML,则尤其如此。 请参见此处进行引人注目的演示。

.*替换为.*? 正则表达式的结尾处; 那应该阻止它匹配太多。 通常,通过添加?使其尽可能适合该模式? ,则要求它尽可能少地匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM