您的位置:首页 > 编程语言 > Java开发

java Pattern类中关于匹配group和group(int group)的一些学习

2014-07-09 11:01 483 查看
转载自同事张文兵,希望好的分享能够扩散!

看了我们组小伙伴的日志,对于Matcher的group()和group(int group),似乎有的还不是分的很清楚,在此给大家解释一下:

1,方法介绍:

(1)group()返回的是该次匹配的整个输入序列;

(2)group(int group)返回的是该次匹配指定的捕获组序列,即本方法的形式参数group就是指定需要获取的捕获组组号。

注意:捕获组是从 1 开始从左到右的索引。组零表示整个模式,因此表达式 m.group(0) 等效于 m.group()。

例子:



输出:

mc.group():tid=0x00007f3d9c002800

mc.group(0):tid=0x00007f3d9c002800

mc.group(1):tid=

mc.group(2):0x00007f3d9c002800

2,预先知识点:

如果不清楚什么是捕获组(即子匹配),在此解释一下:

子匹配:

(1)在整个正则表达式中,圆括号“()”所括起来的部分称为一个子匹配(即子表达式),除了可以得到整个正则表达式的匹配结果外,也可以单独得到每个子表达部分所匹配的结果;

(2)多个子表达式所匹配到的原始内容按照它们在正则表达式中从左到右出现的顺序存储在缓冲区,这个过程称为捕获;

(3)圆括号中的子表达式所捕获的内容(即原始内容,也就是来和正则表达式进行匹配的原字符),可以在整个正则表达式中位于这个子表达式之后的任何地方被反向引用:

第一个子表达式捕获的内容用 “\1” 表示

第二个子表达式捕获的内容用 “\2” 表示

以此类推,第n个子表达式捕获的内容用 “\n” 表示

如:要匹配2个相同的连续数字字符的正则表达式可以为:(\d)\1

要匹配千位和个位相同,百位和十位相同的4位数字的正则表达式可以为:(\d)(\d)\2\1

看完这些,我想大家对于group()和group(int group)已经理解的很透彻了!

如果还想了解更多的关于正则表达式的内容,也可以看看我的技术博客里javascript分栏中的正则表达式部分:http://blog.csdn.net/u011031854/article/category/1588971
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java Pattern group