java正则表达式过滤html p标签

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java正则表达式过滤html p标签相关的知识,希望对你有一定的参考价值。

<p class="p1">
<span>A. She has been to the market.</span>
</p>
保留
A. She has been to the market.

javascript方法如下,JAVA语言类似:
\'你的html文本\'.replace(/.+>(.+)<.+/,\'$1\')
参考技术A var str ='<p class="p1"><span>A. She has been to the market.</span></p>';
var reg = /.*>([^<>]+)<.*/;
str.replace(reg,'$1');

[^<>]不包含尖括号以确保不会匹配到标签,实际情况可能要加全局g或多行m匹配

java正则表达式匹配html

【中文标题】java正则表达式匹配html【英文标题】:java Regular expression matching html 【发布时间】:2011-02-17 01:20:53 【问题描述】:

解决方案: 这行得通:

字符串 p="
[\\\\w\\\\W]*
";

我想匹配并捕获

 标签的封闭内容
试了以下,还是不行,怎么回事?


字符串 p="
.*
"; 匹配器 m=Pattern.compile(p,Pattern.MULTILINE|Pattern.CASE_INSENSITIVE).matcher(input); 如果(m.find()) 字符串 g=m.group(0); System.out.println("g 为 "+g);

【问题讨论】:

说真的,您不应该使用正则表达式解析 HTML。请改用 TagSoup 之类的库。 我们又来了……您尝试搜索了吗?这个指导怎么样 - ***.com/questions/2400623/… [\\\\w\\\\W] 将匹配反斜杠 wW。您的意思可能是[\\w\\W],但您不需要这样做。正如我在回答中所说,只需使用 DOTALL 标志。另一个技巧在 JavaScript 中被大量使用,因为 JS 没有 DOTALL 标志的等效项。 【参考方案1】:

Regex 实际上是not 的正确工具。使用解析器。 Jsoup 不错。

Document document = Jsoup.parse(html);
for (Element element : document.getElementsByTag("pre")) 
    System.out.println(element.text());

parse() 方法也可以采用URLFile 顺便说一句。


我推荐 Jsoup 的原因是它是我尝试过的所有 HTML 解析器中最不冗长的。它不仅提供类似 JavaScript 的方法返回实现 Iterable 的元素,而且还支持 jQuery like selectors,这对我来说是一个加分项。

【讨论】:

【参考方案2】:

您需要 DOTALL 标志,而不是 MULTILINE。 MULTILINE 改变了^$ 的行为,而DOTALL 是让. 匹配行分隔符的那个。您可能也想使用不情愿的量词:

String p = "<pre>.*?</pre>";

【讨论】:

如果有多个&lt;pre&gt; 元素,一个贪婪的.* 将从第一个开始&lt;pre&gt; 匹配到最后一个结束&lt;/pre&gt;。不情愿(或非贪婪).*? 将在第一个结束标记处停止。【参考方案3】:
String stringToSearch = "H1 FOUR H1 SCORE AND SEVEN YEARS AGO OUR FATHER...";

// the case-insensitive pattern we want to search for
Pattern p = Pattern.compile("H1", Pattern.CASE_INSENSITIVE);

Matcher m = p.matcher(stringToSearch);

// see if we found a match
int count = 0;
while (m.find())
    count++;

System.out.println("H1 : "+count);   

【讨论】:

以上是关于java正则表达式过滤html p标签的主要内容,如果未能解决你的问题,请参考以下文章

向各位正则高手请教:java 如何用正则 ,去除html标签之间的空格

java 使用正则表达式过滤HTML中标签

高级正则技巧PHP正则表达式过滤html标签属性(DEMO)

java正则表达式去除html标签保留指定标签

java 使用正则表达式过滤HTML中标签

求一条c# 正则表达式,来获取HTML标签的内容