【问题标题】:Extract parts of html using regex使用正则表达式提取部分 html
【发布时间】:2010-04-22 19:07:09
【问题描述】:

我有一个简单的要求来提取 html 中的文本。假设 html 是

你好

... ...

再见

我想把它转换成三个部分

你好

再见

目的是提取两类文本,简单的html和带有

【问题讨论】:

标签: html regex


【解决方案1】:

不要那样做; HTML 可以以许多漂亮的方式被破坏。请改用beautiful soup

【讨论】:

    【解决方案2】:

    这取决于您使用的语言和上下文。我在我的 CMS 上做了类似的事情,我的方法是先查找标签,然后查找属性。

    获取标签

    "<img (.*?)/>"
    

    然后我在结果中搜索特定属性

    'title="(.*?)"'
    

    如果您想查找所有属性,您可以轻松地将显式标题更改为正则表达式 [a-z] 或非空白字符,然后也循环遍历这些结果。

    【讨论】:

    • 反对你将获得的反对票——欢迎来到 SO ;-) 在你的答案中包含已知问题/限制。使用正则表达式进行 HTML 解析几乎总是被踩在脚下。
    【解决方案3】:

    我实际上尝试做与 asp.net 编译器类似的事情来将标记编译到服务器控制树中,正则表达式被 asp.net 编译器大量使用。我有一个临时解决方案,虽然不是很好,但似乎还可以。

    //字符串源 = "

    你好

    "; string source = "

    hello

    bye

    sss

    "; 正则表达式 exImg = new Regex("(.+?)()"); var match = exImg.Match(source); 诠释最后一个= 0; 而(匹配。成功) { Console.WriteLine(match.Groups[1].Value); Console.WriteLine(match.Groups[2].Value); lastEnd = match.Index + match.Length; 匹配 = match.NextMatch(); } Console.WriteLine(source.Substring(lastEnd, source.Length - lastEnd));

    【讨论】:

      猜你喜欢
      • 2018-11-04
      • 1970-01-01
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      • 2012-04-30
      • 2012-03-24
      • 1970-01-01
      • 2015-02-24
      相关资源
      最近更新 更多