过滤网页HTML标记
JAVA过滤HTML中的所有标记。非常好用!!
package canca.regex;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HtmlFilter {
private Pattern p;
private Matcher m;
public String htmlChanger(String regEx, String htmlTag, String replaceStr) {
String ret = "";
try {
p = Pattern.compile(regEx);// 设置比较模式
m = p.matcher(htmlTag);
boolean rs = m.find();
ret = p.matcher(htmlTag).replaceAll(replaceStr);
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
public static void main(String[] args) {
String htmlToChange = "<html><head><title>测试</title></head><body><p>中国人</p></body></html>"; //你要转换的HTML标记。
String yourRegEx = "(<\\s*[a-zA-Z][^>]*>)|(</\\s*[a-zA-Z][^>]*>)"; //这个就是对应的去掉HTML标记的正则表达式
String replaceStr = ""; //这个是你要将它替换的字符串,因为你要消去HTML标记,所以这里用空串。
HtmlFliter fliter = new HtmlFliter();
String result = fliter.htmlChanger(yourRegEx, htmlToChange, replaceStr);
System.out.println("---->: " + result);
}
}
当然如果去掉<style></style>
<script></script>也许有些不好用。
试试下面的正则表达式。
(<\\s*script\\s*>\\s*([a-zA-Z])*\\s*|([\\一-\\龥])*|([^\\x00-\\xff])*</\\s*script\\s*>)
(<\\s*style\\s*>)\\s*([a-zA-Z])*\\s*|([\\一-\\龥])*|([^\\x00-\\xff])*(</\\s*style\\s*>)