代码之家  ›  专栏  ›  技术社区  ›  Bruce Adams

regex提取HTML正文

  •  4
  • Bruce Adams  · 技术社区  · 15 年前

    如何使用regex从HTML文档中提取正文, 考虑到HTML和body标记可能是大写、小写还是不存在?

    3 回复  |  直到 7 年前
        1
  •  10
  •   Ishmael    7 年前

    不要对此使用正则表达式-使用类似于 Html Agility Pack .

    这是一个敏捷的HTML解析器, 构建读/写DOM并支持 普通的xpath或xslt(实际上 不必理解xpath,也不必 使用XSLT,不用担心…)。它是 一个.NET代码库,允许您 分析“离开网络”的HTML文件。这个 解析器对“real”非常宽容 world“格式错误的HTML。客体 模型与建议非常相似 System.xml,但用于HTML文档(或 溪流)

    然后你可以提取 body 使用XPath。

        2
  •  13
  •   Darryl    15 年前

    像这样的怎么样?

    它捕获了 <body></body> 标签(由于 RegexOptions.IgnoreCase )加入一个名为 theBody .

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

    如果HTML不包含 <车身></Body> 标签 Success 匹配的属性将为假。

            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;
            }
    
        3
  •  0
  •   Jeremy Stein    15 年前

    这会让你非常接近:

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