java的正则去除HTML标签
程序员文章站
2022-03-15 15:16:55
java的正则去除HTML标签...
java的正则去除HTML标签
提示:使用java正则表达式去除html标签
去除方法
前言
由于业务对接别的公司的几个接口,接口返回的数据内容是整个html,所以要去除掉一部分,只保留自己需要的。下面是html的一部分做测试示例:
一、部分测试使用html代码?
private static String html = "<p style=\"text-indent:43px;line-height:38px\">\n" +
" <strong>\n" +
" <span style=\"font-family: 方正仿宋简体;font-size: 21px\">截至10月23日,全球新冠肺炎确诊病例已突破4100万例。秋冬季来临,使得国内民众担心第二波疫情的来袭。在呼吸道传染病的高发季,中国是否会有新冠疫情的局部暴发,会有多大规模?“外防输入,内防扩散”政策下,还有哪些潜在漏洞需要堵住?就相关问题,中国疾病预防控制中心首席流行病学专家吴尊友接受了《中国新闻周刊》的独家专访。</span></strong>\n" +
"</p>\n" +
"<p style=\"text-indent: 43px; line-height: 38px; text-align: center;\">\n" +
" <strong>\n" +
" <span style=\"font-family: 方正仿宋简体;font-size: 21px\">\n" +
" <img src=\"https://img.ivsky.com/img/tupian/pre/201708/29/weilai_keji-007.jpg\" title=\"2020022011385209.png\" alt=\"image.png\" /></span>\n" +
" </strong>\n" +
"</p>\n" +
"<p style=\"text-indent:43px;line-height:38px\">\n" +
" <strong>\n" +
" <span style=\"font-family: 方正仿宋简体;font-size: 21px\"></span>\n" +
" </strong>\n" +
" <strong>\n" +
" <span style=\"font-family: 方正仿宋简体;font-size: 21px\">\n" +
" <span style=\"font-family:方正仿宋简体\">秋冬季防疫,四个潜在风险点要管控好中国新闻周刊:步入秋冬季,全国是否依然有疫情局部暴发的可能性,会不会比过去几个月北京、*、大连的疫情更严重,是否会达到年初的严重程度?吴尊友:疫情严重与否,取决于我们发现的快慢。如果发现的晚,就会很严重,如果发现的早,就能将严重疫情变得不严重。今年秋冬,我国出现疫情局部暴发的可能很小,但零星的病例或聚集性疫情出现,像类似于像青岛那样规模的这种可能性还是有的。</span></span>\n" +
" </strong>\n" +
"</p>\n" +
"<p style=\"text-align: center;\">\n" +
" <img src=\"https://img.ivsky.com/img/tupian/pre/201708/29/weilai_keji-008.jpg\" title=\"2020022011391104.png\" alt=\"image.png\" /></p>";
这是图片
二、去除方法
1.去除所有html标签 运行方法
代码如下(示例):
public static void main (String[] args){
String s = delHTMLTag(html);
System.out.println(s);
}
public static String delHTMLTag(String htmlStr){
String html = "<[^>]+>"; //定义HTML标签的正则表达式
Pattern p_html = Pattern.compile(html,Pattern.CASE_INSENSITIVE);
Matcher m_html = p_html.matcher(htmlStr);
htmlStr=m_html.replaceAll(""); //过滤所有html标签
return htmlStr.trim(); //返回文本字符串
}
运行结果
存在回车符‘/n’没去除掉
2.仅仅去除img标签,保留其他html标签 运行方法
代码如下(示例):
public static void main (String[] args){
String s = delHTMLTag(html);
System.out.println(s);
}
public static String delHTMLTag(String htmlStr){
String html = "<\\s*IMG\\s+([^>]+)\\s*>"; //仅去除img标签
Pattern p_html = Pattern.compile(html,Pattern.CASE_INSENSITIVE);
Matcher m_html = p_html.matcher(htmlStr);
htmlStr=m_html.replaceAll(""); //过滤所有img标签
return htmlStr.trim(); //返回文本字符串
}
运行结果
3.仅仅保留p标签和img标签,删除其他html标签 运行方法
代码如下(示例):
public static void main (String[] args){
String s = delHTMLTag(html);
System.out.println(s);
}
public static String delHTMLTag(String htmlStr){
//仅仅保留p标签和img标签,可自己修改保留其他标签,格式如下
String html = "</?(?!img|p|/?p\\\\d)[^>]+>";
Pattern p_html = Pattern.compile(html,Pattern.CASE_INSENSITIVE);
Matcher m_html = p_html.matcher(htmlStr);
htmlStr=m_html.replaceAll(""); //除p标签和img标签,过滤其他html标签
return htmlStr.trim(); //返回文本字符串
}
运行结果
总结
还有一个是定义script的正则表达式,一个是定义style的正则表达式,
String script = "<script[^>]*?>[\\s\\S]*?<\\/script>"; //定义script的正则表达式
String style = "<style[^>]*?>[\\s\\S]*?<\\/style>"; //定义style的正则表达式
最后是文章使用的表达式图片,以作参考:
本文地址:https://blog.csdn.net/weixin_43502969/article/details/109227812
上一篇: springCloud(八)创建一个配置服务congfig-server
下一篇: 清空数据库全部表