【发布时间】:2014-06-27 15:34:36
【问题描述】:
我正在尝试解码这个 HTML 输入字符串:
<tbody>
<tr class="row0 first" >
<td class="col0 first" data-colid="0" >
<span>Previous close</span>
</td>
<td class="col1 last" data-colid="1" >
<span>39.64</span>
</td>
</tr>
<tr class="row1" >
<td class="col0 first" data-colid="0" >
<span>Open</span>
</td>
<td class="col1 last" data-colid="1" >
<span>39.50</span>
</td>
</tr>
<tr class="row2" >
<td class="col0 first" data-colid="0" >
我试过这个正则表达式:
\<span\>Previous\sclose\<\/span\>[\w\n\r\<\/\s\>\=\"\-]+\<span\>[0-9\.]+\<\/span\>
我得到的输出是:
<span>Previous close</span>
</td>
<td class="col1 last" data-colid="1" >
<span>39.64</span>
我只对 39.64 的值感兴趣。有没有办法使用 REGEX 只匹配“39.64”而不获取 HTML 的其余部分?
谢谢
【问题讨论】:
-
不要使用正则表达式。使用一些工具包来解析数据,比如HTML Agility Pack
-
(?<=<span>Previous\sclose<\/span>[\w\n\r\<\/\s\>\=\"\-]+<span>)[0-9\.]+(?=<\/span>) -
乌鲁别克,谢谢。尝试了您的模式稍作更改,适用于 Expresso,但不适用于 c# Visual Studio 中的 Regex。 @"(?Previous\sclose[\s\w\n\r/"=-]+)[0-9\.]+(?= span>)" 在我看来,问题出在 " 字符上。
-
@eitanbarazani 是的,因为
@你需要加倍"如下@"(?<=<span>Previous\sclose</span>[\s\w\n\r<>/""=-]+<span>)[0-9\.]+(?=</span>)"