日期:2014-05-17 浏览次数:20748 次
public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String atr="<pre class=\"reply-text mb10\" id=\"content-862802486\" style=\"margin-top:0px;margin-bottom:10px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;font-family:Arial;white-space:pre-wrap;word-wrap:break-word;zoom:1;font-size:14px;line-height:24px;background-color:#FFFFFF;\">你这个错就错在使用了.*" + "在正则里.<br/>指的是匹配所有字符,而且是匹配优先,对于你这个正则来说到<a\\shref=\"(http:为止都是正常的,但后面的.*就会一直匹配到文件的最后,因为对于.*来说是匹配所有字符,所以后面的一切都是匹配的.匹配到最后结尾时,再来进行结尾检查,但你的正则是以</a>结尾的,不符合,所以就再回头向回一个个的查,一直查到(.*[^>])中的.*匹配.好了,最后你这个表达式最终的结果其实就是匹配以<a\\shref=\"(http: 开头,以[^>])</a>结尾,中间是任意字符的表达式 </pre>"; 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; } }