正则表达式疑问记录

前端之家收集整理的这篇文章主要介绍了正则表达式疑问记录前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如下字符串:
【</span><span style=\"FONT-FAMILY: &#39;宋体&#39;; LETTER-SPACING: 0pt; COLOR: rgb(0,0); FONT-SIZE: 10.5pt; mso-spacerun: &#39;yes&#39;\">药理学</span><span style=\"FONT-FAMILY: &#39;宋体&#39;; LETTER-SPACING: 0pt; COLOR: rgb(0,0); FONT-SIZE: 10.5pt; mso-spacerun: &#39;yes&#39;\">】

我想要的结果是: 【药理学】

代码如下:
	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

猜你在找的正则表达式相关文章