废话不说,直接上码:

package test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;   /**  * <p>  * Title: HTML相关的正则表达式工具类  * </p>  * <p>  * Description: 包括过滤HTML标记,转换HTML标记,替换特定HTML标记  * </p>  * <p>  * Copyright: Copyright (c) 2006  * </p>  *   * @author hejian  * @version 1.0  * @createtime 2006-10-16  */  public class HtmlRegexpUtil {   private final static String regxpForHtml = "<([^>]*)>"; // 过滤所有以<开头以>结尾的标签   private final static String regxpForImgTag = "<\\s*img\\s+([^>]*)\\s*>"; // 找出IMG标签   private final static String regxpForImaTagSrcAttrib = "src=\"([^\"]+)\""; // 找出IMG标签的SRC属性   /**  *   */  public HtmlRegexpUtil() {   // TODO Auto-generated constructor stub   System.out.println("IMG标签的正则表达式:"+regxpForImgTag);System.out.println("IMG标签的SRC属性的正则表达式:"+regxpForImaTagSrcAttrib);}   /**  *   * 基本功能:替换标记以正常显示  * <p>  *   * @param input  * @return String  */  public String replaceTag(String input) {   if (!hasSpecialChars(input)) {   return input;   }   StringBuffer filtered = new StringBuffer(input.length());   char c;   for (int i = 0; i <= input.length() - 1; i++) {   c = input.charAt(i);   switch (c) {   case '<':   filtered.append("&lt;");   break;   case '>':   filtered.append("&gt;");   break;   case '"':   filtered.append("&quot;");   break;   case '&':   filtered.append("&amp;");   break;   default:   filtered.append(c);   }   }   return (filtered.toString());   }   /**  *   * 基本功能:判断标记是否存在  * <p>  *   * @param input  * @return boolean  */  public boolean hasSpecialChars(String input) {   boolean flag = false;   if ((input != null) && (input.length() > 0)) {   char c;   for (int i = 0; i <= input.length() - 1; i++) {   c = input.charAt(i);   switch (c) {   case '>':   flag = true;   break;   case '<':   flag = true;   break;   case '"':   flag = true;   break;   case '&':   flag = true;   break;   }   }   }   return flag;   }   /**  *   * 基本功能:过滤所有以"<"开头以">"结尾的标签  * <p>  *   * @param str  * @return String  */  public static String filterHtml(String str) {   Pattern pattern = Pattern.compile(regxpForHtml);   Matcher matcher = pattern.matcher(str);   StringBuffer sb = new StringBuffer();   boolean result1 = matcher.find();   while (result1) {   matcher.appendReplacement(sb, "");   result1 = matcher.find();   }   matcher.appendTail(sb);   return sb.toString();   }   /**  *   * 基本功能:过滤指定标签  * <p>  *   * @param str  * @param tag  *            指定标签  * @return String  */  public static String fiterHtmlTag(String str, String tag) {   String regxp = "<\\s*" + tag + "\\s+([^>]*)\\s*>";   Pattern pattern = Pattern.compile(regxp);   Matcher matcher = pattern.matcher(str);   StringBuffer sb = new StringBuffer();   boolean result1 = matcher.find();   while (result1) {   matcher.appendReplacement(sb, "");   result1 = matcher.find();   }   matcher.appendTail(sb);   return sb.toString();   }   /**  *   * 基本功能:替换指定的标签  * <p>  *   * @param str  * @param beforeTag  *            要替换的标签  * @param tagAttrib  *            要替换的标签属性值  * @param startTag  *            新标签开始标记  * @param endTag  *            新标签结束标记  * @return String  * @如:替换img标签的src属性值为[img]属性值[/img]  */  public static String replaceHtmlTag(String str, String beforeTag,   String tagAttrib, String startTag, String endTag) {   String regxpForTag = "<\\s*" + beforeTag + "\\s+([^>]*)\\s*>";   String regxpForTagAttrib = tagAttrib + "=\"([^\"]+)\"";   Pattern patternForTag = Pattern.compile(regxpForTag);   Pattern patternForAttrib = Pattern.compile(regxpForTagAttrib);   Matcher matcherForTag = patternForTag.matcher(str);   StringBuffer sb = new StringBuffer();   boolean result = matcherForTag.find();   while (result) {   StringBuffer sbreplace = new StringBuffer();   Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag   .group(1));   if (matcherForAttrib.find()) {   matcherForAttrib.appendReplacement(sbreplace, startTag   + matcherForAttrib.group(1) + endTag);   }   matcherForTag.appendReplacement(sb, sbreplace.toString());   result = matcherForTag.find();   }   matcherForTag.appendTail(sb);   return sb.toString();   }/*** 从html中提取纯文本* @param strHtml html代码* @return 返回提取的文本*/public static String htmlToStr(String strHtml) {String txtContent = strHtml.replaceAll("</?[^>]+>", ""); //剔出<html>的标签txtContent = txtContent.replaceAll("<a>\\s*|\t|\r|\n</a>", "");//去除字符串中的空格,回车,换行符,制表符return txtContent;}
}

过滤HTML标签java工具类相关推荐

  1. 【java工具类-抓取图片】正则抓取内容里面的j图片,正则,图片替换格式处理图片java处理文章内容里面的图片格式化工具类,能够最大限度的自动是被图片IMG标签和java使用正则抓取图片说明

    目录 1.java处理图片格式自动抓取格式案例 java代码运行案例: 自动抓取的结果如下 2.java代码去除HTML的格式进行返回无格式文本代码 可以经过正则过滤掉,里面的HTML格式,删除空格, ...

  2. 干货:排名前 16 的 Java 工具类!

    2019独角兽企业重金招聘Python工程师标准>>> 干货:排名前 16 的 Java 工具类!   在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最 ...

  3. 排名前 16 的 Java 工具类

    转载来自微信公众号:Java 技术栈.如有侵权,请联系作者删除!! 在 Java 中,工具类定义了一组公共方法,这篇文章将介绍 Java 中使用最频繁及最通用的 Java 工具类.以下工具类.方法按使 ...

  4. beanutils工具类_16 个超级实用的 Java 工具类!

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...

  5. java轻量级并行工具类_16 个超级实用的 Java 工具类

    原标题:16 个超级实用的 Java 工具类 源 /juejin 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名, ...

  6. java 文本工具类_干货:排名前16的Java工具类

    原标题:干货:排名前16的Java工具类 作者丨Java技术栈 https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Ja ...

  7. 干货:排名前16的Java工具类

    image 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源 ...

  8. 排名前16的Java工具类

    原文:https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法 ...

  9. java xml最火的的工具_几种高效的Java工具类推荐

    本文将介绍了十二种常用的.高效的Java工具类 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类. 在开发中,使用这些工具类,不仅可以提高编码效率,还 ...

最新文章

  1. 某口腔app发现了不友善词汇(f*ckMobile)
  2. fiddler修改接口请求返回数据Response的三种方法
  3. 网站优化中导致关键词排名不稳定的原因有哪些?
  4. 编译其他mysql客户程_mysql编译模块
  5. why metadata request for GM4 via http will be redirected to https via 307 s
  6. P3527 [POI2011]MET-Meteors 整体二分 + 树状数组
  7. 【渝粤题库】陕西师范大学201451 中国法制史作业
  8. Win7电脑设置定时关机的操作方法
  9. FaceWarehouse: a 3D Facial Expression Database for Visual Computing
  10. redis源码剖析(2):基础数据结构ADLIST
  11. 暴风一号 病毒 源码学习
  12. 员工工号怎么编码_员工编号管理制度
  13. MySQL登录出错:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
  14. win10分辨率设置_win10分辨率设置方法教程
  15. Zynq术语详解,不懂啥是PL,PS,APU,SCU?那就进来看看吧
  16. 支付宝调起支付时显示的商家别名如何修改?
  17. 乐视商城官方微博壕送5000张电影票:生态可以这样纵横
  18. 修改IDA pdb下载目录的方法(已实践)
  19. CCCCCCCCCCCCCCCCCCC
  20. 人人视频APP突遭下架:上亿用户慌了

热门文章

  1. Python 入门基础 - 基础类型
  2. PT100高精度测温电路 AD623+REF3030(转载)
  3. TI2000系列JTAG仿真器XDS220U使用注意事项
  4. 个人电脑日常必备软件推荐,无广告、好用、持续更新
  5. Part4.2 ros中的坐标变换 动态坐标变换
  6. 关于设计思维课程的学习思考
  7. 4.5.1、CUBEMX USB之MSC+CDC
  8. 2021年市政方向-岗位技能(质量员)考试及市政方向-岗位技能(质量员)考试资料
  9. 百度工程能力提升之道--方法,DevOps工具,人员能力,研发数据
  10. 盘点海外KOL营销模式