java正则表达式括号的使⽤
括号的使⽤
正则表达式
正则表达式括号的使⽤
1 分组
上⼀章提到过的量词只针对紧邻的字符(组)起作⽤,例如HTML语⾔中的标签<table></table>匹配:
<table[\s>][\s\S]+?</table>
其中忽略优先量词+?,只对紧邻的字符组[\s\S]起作⽤,如果需要对之前所有的部分起作⽤就需要⽤到圆括号(),写成:
(<table[\s>][\s\S])+?</table>
起到了将<table[\s>][\s\S]看做⼀个整体的作⽤,即分组。
2 多选结构
括号的第⼆个作⽤就是制造出⼀个多选结构,两个或以上个表达式中都是合法匹配的表达式(适⽤多种情况时),多选结构的形式是(...|...),⽤竖线|分割⼦表达式,这些⼦表达式也叫多选分⽀,多选分⽀可以有好多个,只要有1个分⽀匹配成功即宣告匹配成功,否则匹配失败,可以类⽐C语⾔中的switch-case结构,失败就⾛default下的代码。
3 Pattern
Pattern对应正则表达式对象,如何把⼀个字符串变成程序可以识别的正则表达式?这就需要⽤到Pattern的⽅法compile():
Pattern pattern = Patternpile(String regex);
regex 是提前编辑好的正则表达式字符串。这样编译好的正则表达式可以为接下来的切分或者匹配操作铺垫。
4 Matcher
Matcher可以理解为“某次匹配的结果对象”。就是把编译过的Pattern对象应⽤到某个String对象(下⾯的例⼦使⽤text表⽰),产⽣的Matcher 对象结果。例如:
Pattern pattern = Patternpile(String regex);
Matcher matcher = pattern.matcher(String text);
正则匹配标签
那么如何获取到匹配成功的结果呢?Matcher对象调⽤⽅法find(),返回true就表⽰到⼀个匹配,反之false就是没到。进⼀步地如果想要得到匹配的内容呢?
为了解决这个问题,就先切到括号的下⼀个使⽤⽅法。
5 引⽤分组
在使⽤括号之后,正则表达式会保存每个分组真正匹配的字符串。这种功能叫做捕获分组,括号叫做捕获型括号。那么如何根据个⼈的意愿选择输出某⼀个分组,或者某⼏个分组?
答案是,使⽤编号,从表达式最左边的左括号编号记为1,这⼀对左右括号之间的部分为分组1,例如:
表达式:((\d{1})-(\d{2})-(\d{3}))
1号分组:(\d{1})-(\d{2})-(\d{3})
2号分组:\d{1}
3号分组:\d{2}
4号分组:\d{3}
Matcher对象可以调⽤group(int i)⽅法,获取相应的分组,其中i是分组编号,0号分组是表⽰整个表达式所捕获的分组:
while(matcher.find()){
System.out.up());
//不加参数i相当于i=0
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。