【问题标题】:How do I parse HTML using regular expressions in C#?如何在 C# 中使用正则表达式解析 HTML?
【发布时间】:2009-10-15 01:51:26
【问题描述】:

如何在 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 解析器来执行此操作。

【问题讨论】:

  • 如何重写what正则表达式?请改写你的问题。您的样本不可读。
  • @Michael Petrotta,我已经编辑了我的帖子。
  • 你的问题没有意义。您说您要解析 HTML,但您发布的示例代码不是 HTML。

标签: c# html regex parsing


【解决方案1】:

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

【讨论】:

  • 在我的情况下,输入不是格式良好的 xml。
  • 那么你遇到了一个非常复杂的问题,一般来说...... HTML 解析及其所有隐含元素、可选结束标记等并不好玩。但是,您也许可以利用现有的库,例如... codeplex.com/htmlagilitypack
  • 不,正则表达式不是“解析 HTML 的糟糕方法”,因为这意味着正则表达式完全可以解析 HTML,事实并非如此。数学证明,正则表达式不能解析 HTML。事实上,几乎每个大学生都必须在家庭作业或考试之类的某个时间点证明这一点。
【解决方案2】:

这个问题已经从字面上回答了几十次了,但还是要重复一遍:正则表达式只能解析正则语言,这就是它们被称为正则表达式的原因。 HTML 不是一种正则语言(过去十年可能每个大学生都至少证明过一次),因此不能被正则表达式解析。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      我在 C# 中使用了这个 regx,它可以工作。感谢您的所有回答。

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

      【讨论】:

      • 它适用于您测试过的数据。如果这就是您需要处理的所有数据,那很好。
      • 如果不是:现在你有两个问题。
      【解决方案5】:

      您可能只想使用字符串函数。将 作为解析的指标。

      【讨论】:

        猜你喜欢
        • 2014-06-08
        • 2010-09-21
        • 2014-05-16
        • 1970-01-01
        • 2011-01-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多