Java中 正则表达式中 组 是怎么用的?我看了n遍,没看懂

如题所述

组其实就是用来提取正则中匹配到的内容。
比如有正则表达式:abc(\d{2,5})efg,这个正则本身的意思很简单,就是字符串abc和efg之间有2到5个数字,所以字符串"abc12efg"、“abc34567efg”都能满足这个正则匹配。这个相信你能理解。
那么正则表达式模式中用小括号包起来的"\d{2,5}"这部分就叫“捕获组”,正则表达式引擎会将这部分匹配到的内容记下来,以便以后取用。java代码中,可以在调用Matcher对象的find方法得到true的返回值的时候(true说明正则表达式模式找到了符合匹配的内容),调用该Matcher对象的group(int groupNo)方法获得指定的组内容。还拿刚才那个例子来说,调用matcher.group(1)就会得到"12"、“34567”这样实际匹配的内容。这里要特别注意一下,组编号是从1开始计算的。0号组实际上就是整个正则表达式匹配到的内容。
再深入一点,上面讲到的所谓组是“捕获组”,正则引擎会记下来匹配内容,但是有时候我们不需要捕获,只是想要限制匹配,就会用到非捕获组。如果你真明白了捕获组,再看非捕获组以及前瞻后顾就明白了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-12-07
什么正则,网上查一下都有。你说的组是不是指范围 a-z?追答

看了下,就是一个方括号的内容,比如[a-z][0-9]\1那个\1就是[a-z], 知道为什么我为什么理解的这么快吗? 原因是我上英文网站查的,没有一堆乱七八糟的术语。

圆括号,打错

相似回答