如何使用C#中的正则表达式解析HTML?

时间:2009-10-15 01:51:26

标签: c# html regex parsing

如何使用C#中的正则表达式解析HTML?

例如,给定HTML代码

<s2> t1 </s2>  <img src='1.gif' />  <span> span1 <span/>

我想获得

1.  <s2>
2.  t1
3. </s2>
4. <img src='1.gif' />
5. <span>
6. span1
7. <span/>

如何在C#中使用正则表达式?

在我的例子中,HTML输入不是像XHTML那样格式良好的XML。因此,我不能使用XML解析器来执行此操作。

5 个答案:

答案 0 :(得分:6)

正则表达式是一种解析HTML的非常糟糕的方法。如果您可以保证您的输入将是格式良好的XML(即XHTML),您可以使用XmlReader读取元素,然后根据需要将它们打印出来。

答案 1 :(得分:4)

这已经被几十次回答了,但需要重复一遍:正则表达式只能解析常规语言,这就是为什么它们被称为正则表达式。 HTML不是一种常规语言(因为过去十年中每个大学生都可能至少证明过一次),因此无法通过正则表达式进行解析。

答案 2 :(得分:3)

您可能想要尝试Html Agility Pack http://www.codeplex.com/htmlagilitypack。它甚至可以处理格式错误的HTML。

答案 3 :(得分:0)

我在C#中使用了这个正则表达式,并且它有效。谢谢你的所有答案。

<([^<]*)>|([^<]*)

答案 4 :(得分:-3)

您可能只想使用字符串函数。 make&lt;和&gt;作为解析的指标。