当前位置:  开发笔记 > 编程语言 > 正文

正则表达式提取HTML正文内容

如何解决《正则表达式提取HTML正文内容》经验,为你挑选了3个好方法。

我正在寻找一个正则表达式语句,让我从XHTML文档的body标签之间提取HTML内容.

我需要解析的XHTML将是非常简单的文件,例如,我不必担心JavaScript内容或标签.

下面是我要解析的HTML文件的预期结构.由于我完全知道我将要使用的HTML文件的所有内容,因此这个HTML代码段几乎涵盖了我的整个用例.如果我能得到一个正则表达式来提取这个例子的主体,我会很高兴.



  
    
    
  
  
    

Example paragraph content

 


 

Header 1

从概念上讲,我一直在尝试构建一个匹配内部正文内容的所有正则表达式字符串.有了这个,我会使用C#Regex.Split()方法来获取正文内容.我以为这个正则表达式:

((.|\n)*)|(((*|\n)*)

...会有所作为,但它似乎与我在RegexBuddy中的测试内容完全无关.



1> VonC..:

这会有用吗?

((?:.(?!]*>))+.]*>)|(.+)

当然,您需要添加必要\s的内容以便考虑< body ...>(带空格的元素),如:

((?:.(?!<\s*body[^>]*>))+.<\s*body[^>]*>)|(<\s*/\s*body\s*\>.+)

第二个想法,我不确定为什么我需要一个负面的预测...这也应该有效(对于格式良好的xhtml文档):

(.*<\s*body[^>]*>)|(<\s*/\s*body\s*\>.+)



2> Karl..:

使用XML解析器比使用正则表达式更容易解析XHTML.我知道这不是你问的问题,但是XML解析器能够快速导航到body节点并返回其内容,而不会出现正则表达式给你的任何标记映射问题.

编辑:回应此处的评论; XML解析器太慢了.

有两种XML解析器,一种叫做DOM,大而重,简单友好,它可以在你做任何事情之前从文档中构建一棵树.另一个叫做SAX,速度快,工作量大,顺序读取文件.您将希望SAX找到Body标签.

DOM方法适用于多种用途,提取标签并查找谁是孩子.SAX解析器按顺序读取文件,然后快速获取您所需的信息.正则表达式不会比SAX解析器快,因为它们都只是遍历文件和模式匹配,除了正则表达式在找到正文标记后不会退出,因为正则表达式没有内置XML知识.实际上,您的SAX解析器可能使用小块正则表达式来查找每个标记.


没有理由重新发明轮子.如果它是XHTML,它是XML,而XML解析器就是工作的工具.+1

3> 小智..:
String toMatch="aaaaaaaaaaabcxx sldjfkvnlkfd i m avinash";
Pattern pattern=Pattern.compile(".*?(.*?).*?");
Matcher matcher=pattern.matcher(toMatch);
if(matcher.matches()) {
    System.out.println(matcher.group(1));
}

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有