Pattern p=Pattern.compile("order\\s*by[\\w|\\W|\\s|\\S]*"); Matcher m=p.matcher(hql); StringBuffer sb=new StringBuffer(); while (m.find()){ m.appendReplacement(sb,""); } m.appendTail(sb);find是寻找符合的字符串,appendReplacement(sb,“”)就是把寻找到的合适字符串用“”代替然后 将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个StringBuffer对象里
,所以匹配后的字符串结尾可能还剩余一些,m.appendTail就是把剩余的最后结尾的字符串添加到StringBuffer中