Java正则表达式——分组与捕获
来源:互联网 发布:阿里云网址 编辑:程序博客网 时间:2024/05/20 20:13
传送门: http://blog.sina.com.cn/s/blog_4b9694cf0100cghj.html
X,至少 n 次,但是不超过 m 次
但是我们如果要对多个字符进行重复怎么办呢?此时我们就要用到分组,我们可以使用小括号"()"来指定要重复的子表达式,然后对这个子表达式进行重复,例如:(abc)?表示0个或1个abc 这里一个括号的表达式就表示一个分组。
捕获组
捕获组可以通过从左到右计算其开括号来编号。例如,在表达式((A)(B(C))) 中,存在四个这样的组:
1 ((A)(B(C)))2 \A3 (B(C))4 (C)
组零始终代表整个表达式
之所以这样命名捕获组是因为在匹配中,保存了与这些组匹配的输入序列的每个子序列。捕获的子序列稍后可以通过 Back 引用在表达式中使用,也可以在匹配操作完成后从匹配器检索。
非捕获组
这四个非捕获组用于匹配表达式X,但是不包含表达式的文本。
举例:
-
Pattern "(?<!c)a(\\d+)bd");p = Pattern.compile( -
Matcher "da12bca3434bdca4343bdca2m = p.matcher( 34bm" ); -
while(m.find()){ -
System.out.println(m.group( -
System.out.println(m.group(0)); //0组是整个表达式,看这里,并没有提炼出(?<!c)的字符 。结果 a3434bd -
}
最后用了两种方法解决:
解法一:比较笨的方法,没有使用非捕获组:
解法二:使用非捕获组
一个正则表达式就可解决。
再次印证了正则表达式的重要性。
- Java正则表达式——分组与捕获
- Java正则表达式——分组与捕获
- Java正则表达式——分组与捕获
- Java正则表达式——分组与捕获
- JAVA正则表达式高级用法(分组与捕获)
- JAVA正则表达式高级用法(分组与捕获)
- JAVA正则表达式高级用法(分组与捕获)
- JAVA正则表达式高级用法(分组与捕获)
- JAVA正则表达式高级用法(分组与捕获)
- JAVA正则表达式高级用法(分组与捕获)
- java正则表达式之捕获分组与Back引用
- JAVA正则表达式高级用法(分组与捕获)
- 正则表达式高级用法(分组与捕获)
- java 高级正则表达式 分组 捕获 引用
- 正则表达式捕获分组
- 正则表达式——分组/不捕获/断言/其他
- JavaScript正则表达式分组模式:捕获性分组与非捕获性分组及前瞻
- 正则表达式分组捕获说明
- Java Servlet完全教程
- CSS3发光按钮
- XenServer 6.5 与 XenServer 6.2之对比
- Android中自定义属性的使用
- Matlab学习笔记(三)
- Java正则表达式——分组与捕获
- 找工作的感受
- Linux 2.4.x 网络协议栈QoS模块(TC)的设计与实现
- 记录一个mac相关软件的网站
- google 原生态 抽屉式侧滑菜单 Android DrawerLayout 布局的使用介绍
- empty 与isset区别
- Codeforces Round #288 (Div. 2) C. Anya and Ghosts
- Longest Substring Without Repeating Characters
- 之定义Dialog的宽度