java使用正则表达式过滤html标签
前段时间开发的时候要读取一篇文章的简介内容(也就是前200个字符),使用了隐藏字段,可能有人就要问了,那后台也是可以截取字符的啊,那是因为编辑器里面包含了html标签,所以后台就需要处理html标签的正则表达式,前些天上网搜了下,发现有人写好的一个类,给大家共享下,不要闲小弟落伍了...
importjava.util.regex.Matcher; importjava.util.regex.Pattern; /** *<p> *Title:HTML相关的正则表达式工具类 *</p> *<p> *Description:包括过滤HTML标记,转换HTML标记,替换特定HTML标记 *</p> *<p> *Copyright:Copyright(c)2006 *</p> * *@authorhejian *@version1.0 *@createtime2006-10-16 */ publicclassHtmlRegexpUtil{ privatefinalstaticStringregxpForHtml="<([^>]*)>";//过滤所有以<开头以>结尾的标签 privatefinalstaticStringregxpForImgTag="<\\s*img\\s+([^>]*)\\s*>";//找出IMG标签 privatefinalstaticStringregxpForImaTagSrcAttrib="src=\"([^\"]+)\"";//找出IMG标签的SRC属性 /** * */ publicHtmlRegexpUtil(){ //TODOAuto-generatedconstructorstub } /** * *基本功能:替换标记以正常显示 *<p> * *@paraminput *@returnString */ publicStringreplaceTag(Stringinput){ if(!hasSpecialChars(input)){ returninput; } StringBufferfiltered=newStringBuffer(input.length()); charc; for(inti=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> * *@paraminput *@returnboolean */ publicbooleanhasSpecialChars(Stringinput){ booleanflag=false; if((input!=null)&&(input.length()>0)){ charc; for(inti=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; } } } returnflag; } /** * *基本功能:过滤所有以"<"开头以">"结尾的标签 *<p> * *@paramstr *@returnString */ publicstaticStringfilterHtml(Stringstr){ Patternpattern=Pattern.compile(regxpForHtml); Matchermatcher=pattern.matcher(str); StringBuffersb=newStringBuffer(); booleanresult1=matcher.find(); while(result1){ matcher.appendReplacement(sb,""); result1=matcher.find(); } matcher.appendTail(sb); returnsb.toString(); } /** * *基本功能:过滤指定标签 *<p> * *@paramstr *@paramtag *指定标签 *@returnString */ publicstaticStringfiterHtmlTag(Stringstr,Stringtag){ Stringregxp="<\\s*"+tag+"\\s+([^>]*)\\s*>"; Patternpattern=Pattern.compile(regxp); Matchermatcher=pattern.matcher(str); StringBuffersb=newStringBuffer(); booleanresult1=matcher.find(); while(result1){ matcher.appendReplacement(sb,""); result1=matcher.find(); } matcher.appendTail(sb); returnsb.toString(); } /** * *基本功能:替换指定的标签 *<p> * *@paramstr *@parambeforeTag *要替换的标签 *@paramtagAttrib *要替换的标签属性值 *@paramstartTag *新标签开始标记 *@paramendTag *新标签结束标记 *@returnString *@如:替换img标签的src属性值为[img]属性值[/img] */ publicstaticStringreplaceHtmlTag(Stringstr,StringbeforeTag, StringtagAttrib,StringstartTag,StringendTag){ StringregxpForTag="<\\s*"+beforeTag+"\\s+([^>]*)\\s*>"; StringregxpForTagAttrib=tagAttrib+"=\"([^\"]+)\""; PatternpatternForTag=Pattern.compile(regxpForTag); PatternpatternForAttrib=Pattern.compile(regxpForTagAttrib); MatchermatcherForTag=patternForTag.matcher(str); StringBuffersb=newStringBuffer(); booleanresult=matcherForTag.find(); while(result){ StringBuffersbreplace=newStringBuffer(); MatchermatcherForAttrib=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); returnsb.toString(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。