【问题标题】:Decoding HTML with Regex [duplicate]使用正则表达式解码 HTML [重复]
【发布时间】: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
  • (?&lt;=&lt;span&gt;Previous\sclose&lt;\/span&gt;[\w\n\r\&lt;\/\s\&gt;\=\"\-]+&lt;span&gt;)[0-9\.]+(?=&lt;\/span&gt;)
  • 乌鲁别克,谢谢。尝试了您的模式稍作更改,适用于 Expresso,但不适用于 c# Visual Studio 中的 Regex。 @"(?Previous\sclose[\s\w\n\r/"=-]+)[0-9\.]+(?= span>)" 在我看来,问题出在 " 字符上。
  • @eitanbarazani 是的,因为@ 你需要加倍" 如下@"(?&lt;=&lt;span&gt;Previous\sclose&lt;/span&gt;[\s\w\n\r&lt;&gt;/""=-]+&lt;span&gt;)[0-9\.]+(?=&lt;/span&gt;)"

标签: c# regex


【解决方案1】:

您应该尝试解析 HTML,而不是尝试在其中查找值。

请检查 HtmlAgilityPack 以解析 HTML。

【讨论】:

  • 这个工具能在Windows Phone / WinRT环境下工作吗?
  • @eitanbarazani 是的,确实如此。它甚至可以在 Windows Phone 7 中使用,您可以从 nuget 获取包。
  • 是的!它还支持 Windows Phone 7.1、WinRT 和 Silverlight。在 nuget.org/packages/HtmlAgilityPack 检查 NuGet 包。
猜你喜欢
  • 2018-04-29
  • 2011-01-23
  • 1970-01-01
  • 2020-04-26
  • 2016-06-15
  • 2011-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多