package com.common.util; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * <p> * Title: HTML相关的正则表达式工具类 * </p> * <p> * Description: 包括过滤HTML标记,转换HTML标记,替换特定HTML标记 * </p> * <p> * Copyright: Copyright (c) 2010 * </p> * @author tgl * @version 1.0 * @createtime 2009-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 static void main(String args[]){ String html = "<DIV>\n<DIV>内容提要测试\n<DIV>内容提要测试\n<DIV>内容提要测试\n<DIV>内容提要测试\n<DIV>内容提要测试\n<DIV>内容提要测试\n<DIV>内容提要测试</DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV>"; System.out.println(replaceTag(html)); } /** * */ public HtmlRegexpUtil() { // TODO Auto-generated constructor stub } /** * * 基本功能:替换标记以正常显示 * <p> * * @param input * @return String */ public static 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("<"); break; case '>': filtered.append(">"); break; case '"': filtered.append("""); break; case '&': filtered.append("&"); break; default: filtered.append(c); } } return (filtered.toString()); } /** * * 基本功能:判断标记是否存在 * <p> * * @param input * @return boolean */ public static 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(); } }
最近下载更多
3334004690 LV10
5月28日
xytthy LV3
2022年6月8日
ZGM12138 LV2
2021年7月31日
tyyeng LV18
2020年1月31日
dzbing129 LV3
2019年7月11日
3365121 LV1
2017年11月10日
pisgodfans LV8
2017年2月24日
玉儿滢心 LV4
2014年10月19日
AXIN LV36
2014年2月12日
最近浏览更多
3334004690 LV10
5月28日
xytthy LV3
2022年6月8日
微信网友_5793263879983104 LV1
2022年1月17日
ZGM12138 LV2
2021年7月31日
HighMlinxi LV1
2021年4月28日
gan857569302 LV9
2020年6月23日
mecyyyyy LV1
2020年5月29日
756124136
2020年5月6日
暂无贡献等级
kong.yee LV40
2020年4月26日
lsq54365 LV14
2020年4月14日