原创

Java利用正则表达式过滤Html标签实现方法

最近有群友问如何读取一篇文章的简介内容,而内容中包含html标签,script js标签以及style样式等(文章前300个字符),如果通过截取的方式无法正常显示,其实有一种方式很简单只需要通过正则表达式过滤掉所有html标签。

使用正则表达式删除html标签工具类,具体代码如下:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class HTMLUtils {
	
	public static String HTMLTagSpirit(String htmlStr) {
		String regEx_script = "<script[^>]*?>[\\s\\S]*?<\\/script>"; // 定义script正则表达式
		String regEx_style = "<style[^>]*?>[\\s\\S]*?<\\/style>"; // 定义style样式正则表达式
		String regEx_html = "<[^>]+>"; // 定义HTML标签正则表达式

		/*
		 * 过滤script标签
		 */
		Pattern pScript = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);
		Matcher mScript = pScript.matcher(htmlStr);
		htmlStr = mScript.replaceAll(""); 

		/*
		 * 过滤style标签
		 */
		Pattern pStyle = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);
		Matcher mStyle = pStyle.matcher(htmlStr);
		htmlStr = mStyle.replaceAll("");

		/*
		 * 过滤html标签
		 */
		Pattern pHtml = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
		Matcher mH_html = pHtml.matcher(htmlStr);
		htmlStr = mH_html.replaceAll("");
		
		// 替换所有空格
		htmlStr = htmlStr.replaceAll("&nbps;", "");
		
		return htmlStr.trim();
	}
	
	public static void main(String[] args) {
		String htmlStr = "<div class=\"news_tag\"><a href=\"http://blog.yoodb.com/\">&nbps;素文宅博客</a></div>";
		System.out.println("文本内容:" + HTMLTagSpirit(htmlStr));
	}
}
~阅读全文~人机检测~

关注下方微信公众号“Java精选”(w_z90110),回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。

Java精选专注程序员推送一些Java开发知识,包括基础知识、各大流行框架(Mybatis、Spring、Spring Boot等)、大数据技术(Storm、Hadoop、MapReduce、Spark等)、数据库(Mysql、Oracle、NoSQL等)、算法与数据结构、面试专题、面试技巧经验、职业规划以及优质开源项目等。其中一部分由小编总结整理,另一部分来源于网络上优质资源,希望对大家的学习和工作有所帮助。

评论

  1. #1

    (2018/11/30 12:01:26)回复
    // 替换所有空格 htmlStr = htmlStr.replaceAll("&nbps;", ""); 空格是nbsp,不是npps哈。。。。。。

  2. #2

    (2018/01/16 16:58:17)回复
    一辈子只做好一件事!我是有多么的大方吖!哈哈

  3. #3

    机智的小盆友 (2017/11/14 11:08:21)回复
    虽然 现在用不着,但是 赶脚 很流弊的 样子,mark一下

  4. #4

    (2017/11/14 10:59:37)回复
    简洁明了,很实用!谢谢博主

分享:

支付宝

微信