欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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>";

这是图片

java的正则去除HTML标签

二、去除方法

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’没去除掉
java的正则去除HTML标签

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(); //返回文本字符串
}

运行结果

java的正则去除HTML标签

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(); //返回文本字符串
}

运行结果

java的正则去除HTML标签

总结

还有一个是定义script的正则表达式,一个是定义style的正则表达式,

String script = "<script[^>]*?>[\\s\\S]*?<\\/script>"; //定义script的正则表达式
String style = "<style[^>]*?>[\\s\\S]*?<\\/style>"; //定义style的正则表达式

最后是文章使用的表达式图片,以作参考:
java的正则去除HTML标签

本文地址:https://blog.csdn.net/weixin_43502969/article/details/109227812