java使用正则表达式去除字符串的html标签
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String atr="
你这个错就错在使用了.*" +
"在正则里.
指的是匹配所有字符,而且是匹配优先,对于你这个正则来说到<a\\shref=\"(http:为止都是正常的,但后面的.*就会一直匹配到文件的最后,因为对于.*来说是匹配所有字符,所以后面的一切都是匹配的.匹配到最后结尾时,再来进行结尾检查,但你的正则是以</a>结尾的,不符合,所以就再回头向回一个个的查,一直查到(.*[^>])中的.*匹配.好了,最后你这个表达式最终的结果其实就是匹配以<a\\shref=\"(http: 开头,以[^>])</a>结尾,中间是任意字符的表达式
System.out.println(splitAndFilterString(atr,100));
}
/**
* 删除input字符串中的html格式
*
* @param input
* @param length
* @return
*/
public static String splitAndFilterString(String input, int length) {
if (input == null || input.trim().equals("")) {
return "";
}
// 去掉所有html元素,
String str = input.replaceAll("\\&[a-zA-Z]{1,10};", "").replaceAll(
"]*>", "");
str = str.replaceAll("[(/>)
int len = str.length();
if (len <= length) {
return str;
} else {
str = str.substring(0, length);
str += "...";
}
return str;
}
}