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.
\'你的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 之类的库。[\\\\w\\\\W]
将匹配反斜杠 w
或 W
。您的意思可能是[\\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()
方法也可以采用URL
或File
顺便说一句。
我推荐 Jsoup 的原因是它是我尝试过的所有 HTML 解析器中最不冗长的。它不仅提供类似 JavaScript 的方法返回实现 Iterable
的元素,而且还支持 jQuery like selectors,这对我来说是一个大加分项。
【讨论】:
【参考方案2】:您需要 DOTALL 标志,而不是 MULTILINE。 MULTILINE 改变了^
和$
的行为,而DOTALL 是让.
匹配行分隔符的那个。您可能也想使用不情愿的量词:
String p = "<pre>.*?</pre>";
【讨论】:
如果有多个<pre>
元素,一个贪婪的.*
将从第一个开始<pre>
匹配到最后一个结束</pre>
。不情愿(或非贪婪).*?
将在第一个结束标记处停止。【参考方案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标签之间的空格