深刻理解正则表达式的"组"以及"?:"
来源:互联网 发布:网络黄金egd崩盘了吗 编辑:程序博客网 时间:2024/06/05 08:57
一、正则表达式组的概念:
Groups
Group是指里用括号括起来的,能被后面的表达式调用的正则表达式。Group 0 表示整个表达式,group 1表示第一个被括起来的group,以此类推。所以;
A(B(C))D
里面有三个group:group 0是ABCD, group 1是BC,group 2是C。
二、?:的理解—取消所在括号的组:
有点难以理解,直接通过小demo来讲解。
public static void main(String[] args) { String reg = "(\\d{1,3}(.*?)\\d{2}([a-z]{3}))"; Pattern p = Pattern.compile(reg);// Matcher m = p.matcher("123abc45def"); System.out.println("group count = "+m.groupCount()); if(m.matches()){ System.out.println("结果:"+m.group(2)); }else{ System.out.println("not found"); } }
分析如下:
如果不加 ?:则有3个组:
group(1)—–123abc45def
group(2)—–abc
group(3)—–def
如果在最外面的括号中加入?:如String reg = “(?:\d{1,3}(.*?)\d{2}([a-z]{3}))”,则只有2个组了,?:取消它所在的括号的组。
此时,group(1)—abc, group(2)—def;
如果在第二个括号里加入?:,则表示取消该括号的组,此时只有两个组。
如:String reg = “(\d{1,3}(?:.*?)\d{2}([a-z]{3}))”;
则group(1)—–123abc45def
group(2)——def.
如果加入两个?:,如:String reg = “(?:\d{1,3}(?:.*?)\d{2}([a-z]{3}))
则,只剩下一个组了,即group(1)—def。
这是我的个人理解,不正之处,请斧正。
1 0
- 深刻理解正则表达式的"组"以及"?:"
- 正则表达式的一些理解,以及学习记录
- 正则表达式的理解
- 正则表达式的理解
- 正则表达式的理解
- 句柄的深刻理解
- Layout_weight的深刻理解
- 对正则表达式的理解
- 对正则表达式的理解
- python正则表达式的理解
- 正则表达式 捕获组理解
- 深刻理解团队合作以及原理
- 正则表达式速记理解技巧 常用的正则表达式
- 各种流派的正则表达式说明以及shell正则表达式
- 前端开发正则表达式验证以及常用的正则表达式
- 对正则表达式中的捕获组的理解
- 对String的深刻理解
- 对String的深刻理解
- JVM-java内存区域与内存溢出异常
- bfs转弯问题
- poj1837
- 如何判断只能是数字,英文字母和中文 及获取androidmanifest.xml中meta-data的配置
- The Grammer of Graphics 读书笔记 - Introduction
- 深刻理解正则表达式的"组"以及"?:"
- 数据结构实验之求二叉树后序遍历和层次遍历
- CodeForces 688A Opponents(群架)
- 设计模式-模板模式
- HDU 1049 Climbing Worm
- Apache Commons CLI
- hbase协处理器引发的问题解决方案
- poj 2442 Sequence(贪心,堆)
- Java关键字volatile