加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式疑问记录

发布时间:2020-12-14 01:12:15 所属栏目:百科 来源:网络整理
导读:如下字符串: 【/spanspan style="FONT-FAMILY: #39;宋体#39;; LETTER-SPACING: 0pt; COLOR: rgb(0,0); FONT-SIZE: 10.5pt; mso-spacerun: #39;yes#39;"药理学/spanspan style="FONT-FAMILY: #39;宋体#39;; LETTER-SPACING: 0pt; COLOR: rgb(0,0); FONT-SIZ
如下字符串:
【</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(')');

结果输出正常: 【药理学】,虽然结果对了,但不明白为何加上'?'就可以了?!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读