REGEX - 查找具有特定类的td,包括嵌套表

时间:2009-07-09 12:57:55

标签: .net html regex winforms

我要解析一段HTML。 看起来有点像:

<table>
   <tr>
     <td class="blabla"> <table><tr><td><table><tr><td></td></tr></table></td></tr></table>
     </td>
   </tr>
  <tr>
     <td class="blabla"> <table><tr><td></td></tr></table>
     </td>
   </tr>
</table>

我需要使用类td提取每个blabla,但这些单元格中的每一个都可以有0个或更多嵌套表,其中包含许多嵌套的td。我想得到

<td class="blabla"> ... many nested stuff ... </td>

由于

6 个答案:

答案 0 :(得分:6)

不要尝试使用正则表达式解析HTML。你不能编写一个符合你想要的表达式,因为HTML不是常规的。

在您的语言提供的库中使用HTML / XML解析器。 System.Xml有许多有用的类,可以让您打开文件并使用XPath查询它。

您正在寻找的XPath表达式是

//td[@class="someClass"]

答案 1 :(得分:4)

如果您需要进行extenisve html解析,我建议使用Html Agility Pack而不是正则表达式。 HAP从html页面构建xml文档,以便您可以使用XPath查找特定节点。

答案 2 :(得分:1)

为什么不使用css选择器?

答案 3 :(得分:0)

([TT] [的dD] \的sclass = \ “布拉布拉\”)

答案 4 :(得分:0)

您将寻找类似于/<td\sclass=\"(.*?)\">/的正则表达式,但我不知道在.net中执行此操作的方法。

但是,由于你可以严重地形成HTML的方式,正则表达式不适合解析。有更好的工具可以做到这一点。

正如已经提到的,使用XPath是使用// td [@ class =“someClass”]执行此操作的一种非常好的方法。这会给你td节点。然后,您可以获取该内容并根据需要进行处理

答案 5 :(得分:0)

你不能只使用正则表达式,因为它太复杂了。即使使用前瞻匹配,正则表达式也必须动态更改,因为您必须根据所需数量</td>之后的<td>来增加{{1}}的数量。