正则表达式提取html正文

时间:2009-06-11 17:32:19

标签: c# vb.net regex

我如何使用Regex从html doc中提取正文, 考虑到html和body标签可能是大写,小写或可能不存在?

3 个答案:

答案 0 :(得分:13)

这样的事情怎么样?

它会将<body></body>个标记(由于RegexOptions.IgnoreCase而不区分大小写)之间的所有内容捕获到名为theBody的组中。

RegexOptions.Singleline允许我们将多行HTML作为单个字符串处理。

如果HTML不包含<body></body>标记,则匹配的Success属性将为false。

        string html;

        // Populate the html string here

        RegexOptions options = RegexOptions.IgnoreCase | RegexOptions.Singleline;
        Regex regx = new Regex( "<body>(?<theBody>.*)</body>", options );

        Match match = regx.Match( html );

        if ( match.Success ) {
            string theBody = match.Groups["theBody"].Value;
        }

答案 1 :(得分:10)

不要使用正则表达式 - 使用类似Html Agility Pack

的内容
  

这是一个敏捷的HTML解析器   构建一个读/写DOM并支持   普通的XPATH或XSLT(实际上你   不必了解XPATH也不了解   使用XSLT,不用担心......)。它是   允许您使用的.NET代码库   解析“out of the web”HTML文件。该   解析器非常宽容“真实   世界“格式错误的HTML。对象   模型与提出的非常相似   System.Xml,但用于HTML文档(或   流)。

然后,您可以使用XPATH提取body

答案 2 :(得分:0)

这应该让你非常接近:

(?is)<body(?:\s[^>]*)>(.*?)(?:</\s*body\s*>|</\s*html\s*>|$)