【</span><span style=\"FONT-FAMILY: '宋体'; LETTER-SPACING: 0pt; COLOR: rgb(0,0); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'\">药理学</span><span style=\"FONT-FAMILY: '宋体'; LETTER-SPACING: 0pt; COLOR: rgb(0,0); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'\">】
我想要的结果是: 【药理学】
代码如下:
public static String deleteBetweenByRegex(String str,String open,String close) { if (StringUtils.isNotBlank(open) && StringUtils.isNotBlank(close) && StringUtils.isNotBlank(str)) { StringBuffer sb = new StringBuffer().append('(').append(open) .append(".+").append(close).append(')'); String regex = sb.toString(); System.out.println(regex);//输出结果:(<.+>) Pattern p = Pattern.compile(regex); Matcher m = p.matcher(str); int i = 0; while (m.find()) { str = StringUtils.remove(str,m.group(1)); System.out.println(i++); } } return str; }
调用此方法返回结果却是: 【】,
此后我无意间加了一个问号'?',如下:
StringBuffer sb = new StringBuffer().append('(').append(open) .append(".+?").append(close).append(')');
结果输出正常: 【药理学】,虽然结果对了,但不明白为何加上'?'就可以了?! 原文链接:/regex/360212.html