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

正则表达式 捕获组,向前引用,零宽度断言,贪婪量词,惰性量词以及

发布时间:2020-12-13 19:54:31 所属栏目:百科 来源:网络整理
导读:原来写过一篇正则表达式的文章 http://hi.baidu.com/kabike/item/305cb3e591bbf4b52f140ba7 后来又读了一遍《精通正则表达式》,感觉有了新的认识. 捕获组 正则表达式中的括号相当于一个分组,比如下面这个正则表达式,就把字符串分成了"_"分割的三个分组, 然后
原来写过一篇正则表达式的文章
http://hi.baidu.com/kabike/item/305cb3e591bbf4b52f140ba7
后来又读了一遍《精通正则表达式》,感觉有了新的认识.

捕获组
正则表达式中的括号相当于一个分组,比如下面这个正则表达式,就把字符串分成了"_"分割的三个分组,
然后可以利用$1引用第一个分组,$3引用第三个分组
Java代码
  1. Patternp=Pattern.compile("([^_]+)_(d+)_([^_]+)");
  2. Stringsrc1="孙燕姿_20091103_遇见.mp3";
  3. Matcherm=p.matcher(src1);
  4. System.out.println(m.replaceAll("$1_$3"));
  5. //output孙燕姿_遇见.mp3


向前引用
假设想匹配字符串中的"hello hello"这样的字串是很容易的,但是想匹配所有的这样的重复字符串呢(比如 "aaa aaa"和"www www")?
可以利用向前引用,即寻找已经匹配的捕获组.
比如下面这个正则表达式,寻找这样的匹配模式:多个字母(形成了捕获组1),一个空格,捕获组1
Java代码
  1. Patternp=Pattern.compile("(w+)s1");
  2. Stringsrc="Ialwaysmakemakesomemistakeswhenwhenwritting.";
  3. Matcherm=p.matcher(src);
  4. while(m.find()){
  5. System.out.println(m.group());
  6. }
  7. //outputmakemake
  8. whenwhen

(编辑:李大同)

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

    推荐文章
      热点阅读