我要解析一段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>
由于
答案 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}}的数量。