正则表达式解析HTML表格

时间:2010-12-19 15:16:54

标签: regex vb.net

我正在尝试删除HTML文件中的表格,特别是对于以下文档,我想删除标记<TABLE....> and </TABLE>中的任何内容。该文档包含多个表格,其中包含文本。

然而,我提出的表达式<TABLE.*>\s*[\s|\S]*</TABLE>\s*将删除表之间的文本。实际上,它会删除第一个<TABLE>和最后一个</TABLE>标记之间的所有内容。我想保留两者之间的文本,只删除表格。任何建议都非常感谢。谢谢。

====================

<TABLE STYLE=xxx, Font=yyy, etc>

table texts that should be DELETED...

</TABLE>


other texts that should be KEPT...


<TABLE STYLE=xxx, Font=yyy, etc>

table texts that should be DELETED...

</TABLE>

 ==========================================

2 个答案:

答案 0 :(得分:2)

答案是使用HTML或SGML解析器,.NET有一些:

http://htmlagilitypack.codeplex.com/

SGML parser .NET recommendations

如果您绝对想要使用正则表达式,请熟悉balancing groups,否则嵌套表将会中断。这并不容易,并且可能比常规SGML解析器执行得慢得多。但请注意:看到你的表情,我认为你是一个正则表达式的新手(提示:不惜任何代价避免贪婪.匹配),所以这可能还不是你的一杯茶。

答案 1 :(得分:2)

因为即使我告诉你 你真的应该 ,我知道你不会去看HTML解析器,我只会回答这个问题。

这只匹配表:

<table.*?>.*?</table>

它需要两个选项:dotallignoreCase

您可以在此处试用:http://gskinner.com/RegExr/

现在考虑使用Lucero建议的HTML Agility Pack吗?

编辑:也许这就是你的意思,抱歉: