正则表达式 (捕获组与group)

本文介绍了正则表达式中的Pattern和Matcher类,重点讲解了捕获组的概念,如何通过括号对字符进行分组,并通过groupCount方法获取分组数量。示例展示了如何获取不同分组的值,包括整个表达式和各个捕获组的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先来看个例子
把逗号之间的数字和逗号括号分隔的数字取出来

String s=" $this->data['singlev300']=bindec(substr($this->dataBin,5960,81));
Pattern ss1=Pattern.compile("(,(.*?),)([0-9]+)");
        Matcher m1=ss1.matcher(s);
        while(m1.find()){
            System.out.println(m1.group(0));
            System.out.println(m1.group(1));
            System.out.println(m1.group(2));
            System.out.println(m1.group(3));
        }

结果为:
在这里插入图片描述

Pattern类

pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。

Matcher类

Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。

捕获组

捕获组是把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。

例如,正则表达式 (dog) 创建了单一分组,组里包含"d",“o”,和"g"。

捕获组是通过从左至右计算其开括号来编号。

可以通过调用 matcher 对象的 groupCount 方法来查看表达式有多少个分组。groupCount 方法返回一个 int 值,表示matcher对象当前有多个捕获组。

还有一个特殊的组(group(0)),它总是代表整个表达式。该组不包括在 groupCount 的返回值中。

分析结果:

第一行输出的为整个表达式的值。
第二行输出的为第2 个捕获组的值
第三行输出的为第3个捕获组的值,即第一个括号里的第一个括号里的值
第四行输出的为第4个表达式的值,即最后一个括号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值