java中如何使用正则表达式中的组
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍java中如何使用正则表达式中的组,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!组是括号划分的正则表达式,可以根据组的编号来引用某个组。组号为0表示整个表达式,
千家信息网最后更新 2025年11月08日java中如何使用正则表达式中的组
这篇文章主要介绍java中如何使用正则表达式中的组,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
组是括号划分的正则表达式,可以根据组的编号来引用某个组。组号为0表示整个表达式,组号1表示从左到右被第一个括号扩起的组,以此类推。
例如:
A(B(CD))E中有三个组:组0是ABCDE,组1是BCD,组2是CD。
Matcher对象提供了一系列方法,用以获取与组相关的信息:
方法作用
public int groupCount()返回该匹配器的模式中的分组数目,第0组不包括在内public String group()返回前一次匹配操作的第0组(整个匹配)public String group(int i)返回在前一次匹配操作期间的指定的组号public int start(int group)返回在前一次匹配操作中寻找到的组的起始索引public int end(int group)返回在前一次匹配操作中寻找到的组的最后一个字符索引加一的值
例子:
import java.util.regex.Matcher;import java.util.regex.Pattern;public class GroupsDemo { static public final String POEM="Twas brilling, and the slithy toves\n" + "Did gyre and gimble in the wabe.\n" + "All mimsy were the borogoves,\n" + "And the mome raths outgrabe.\n"; public static void main(String[] args) {/* * Patten.MULTILINE为模式标记,表示多行模式,在多行模式下,表达式^和$分别匹配一行的开始和结束,也可以匹配输入字符串的开始和结束 * \S+表示一次以上的非空格字符,s+表示一次以上的空格字符,目的匹配每行的最后3个字符。 */Matcher m=Pattern.compile("(\\S+)\\s+((\\S+)\\s+(\\S+))$",Pattern.MULTILINE).matcher(POEM);while (m.find()) { for (int i = 0; i <=m.groupCount(); i++) { System.out.print("第"+i+"组是:"+"["+m.group(i)+"] ");} System.out.println();} }}运行结果:
第0组是:[the slithy toves] 第1组是:[the] 第2组是:[slithy toves] 第3组是:[slithy] 第4组是:[toves] 第0组是:[in the wabe.] 第1组是:[in] 第2组是:[the wabe.] 第3组是:[the] 第4组是:[wabe.] 第0组是:[were the borogoves,] 第1组是:[were] 第2组是:[the borogoves,] 第3组是:[the] 第4组是:[borogoves,] 第0组是:[mome raths outgrabe.] 第1组是:[mome] 第2组是:[raths outgrabe.] 第3组是:[raths] 第4组是:[outgrabe.]
start()和end()的使用:
在匹配操作成功之后,start()返回先前匹配的起始位置的索引,而end()返回所匹配的最后字符的索引加一的值。如果匹配操作失败后(或先于一个正在进行的匹配操作去操作)调用start()或end()将会产生IllegalStateException.
下面是使用例子:
import java.util.regex.Matcher;import java.util.regex.Pattern;public class GroupsDemo { static public final String POEM="Twas brilling, and the slithy toves\n" + "Did gyre and gimble in the wabe.\n" + "All mimsy were the borogoves,\n"; public static void main(String[] args) {/* * Patten.MULTILINE为模式标记,表示多行模式,在多行模式下,表达式^和$分别匹配一行的开始和结束,也可以匹配输入字符串的开始和结束 * \S+表示一次以上的非空格字符,s+表示一次以上的空格字符,目的匹配每行的最后3个字符。 */Matcher m=Pattern.compile("(\\S+)\\s+((\\S+)\\s+(\\S+))$",Pattern.MULTILINE).matcher(POEM);while (m.find()) { System.out.print("起始索引为:"+m.start()); System.out.println("结束索引为:"+m.end()); for (int i = 0; i <=m.groupCount(); i++) { System.out.print("第"+i+"组是:"+"["+m.group(i)+"] "); System.out.print("该组的起始索引为:"+m.start(i)); System.out.println("该组的结束索引为:"+m.end(i));} System.out.println();} }}运行结果:
起始索引为:19结束索引为:35第0组是:[the slithy toves] 该组的起始索引为:19该组的结束索引为:35第1组是:[the] 该组的起始索引为:19该组的结束索引为:22第2组是:[slithy toves] 该组的起始索引为:23该组的结束索引为:35第3组是:[slithy] 该组的起始索引为:23该组的结束索引为:29第4组是:[toves] 该组的起始索引为:30该组的结束索引为:35起始索引为:56结束索引为:68第0组是:[in the wabe.] 该组的起始索引为:56该组的结束索引为:68第1组是:[in] 该组的起始索引为:56该组的结束索引为:58第2组是:[the wabe.] 该组的起始索引为:59该组的结束索引为:68第3组是:[the] 该组的起始索引为:59该组的结束索引为:62第4组是:[wabe.] 该组的起始索引为:63该组的结束索引为:68起始索引为:79结束索引为:98第0组是:[were the borogoves,] 该组的起始索引为:79该组的结束索引为:98第1组是:[were] 该组的起始索引为:79该组的结束索引为:83第2组是:[the borogoves,] 该组的起始索引为:84该组的结束索引为:98第3组是:[the] 该组的起始索引为:84该组的结束索引为:87第4组是:[borogoves,] 该组的起始索引为:88该组的结束索引为:98
以上是"java中如何使用正则表达式中的组"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
索引
起始
字符
模式
表达式
空格
多行
正则
一行
例子
内容
字符串
括号
方法
标记
目的
篇文章
结果
加一
输入
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
天津大学有网络安全研究生吗
饥荒服务器怎么给人管理员
无锡物联网智慧医院软件开发
数据报表软件开发
怎么把数据库移到另一个工程
12306服务器查询超时
医院抽血dna数据库
小米账号运动删除数据库
哪家券商有软件开发能力
杭州网络安全宣传周
利盟服务器
值得信赖的网络安全零信任安全
网络安全办公室问答
学网络技术太着急
街头篮球四区的服务器在哪
线路考察数据库构建
通化5g软件开发
呼吁网络安全英语作文
共享服务器打不开
火舞软件开发召唤三国
呼图壁网络安全办公室
中国的网络安全法律法规
管理软件开发服务价格
利盟服务器
机房服务器和云上服务器
广东系统软件开发靠谱吗
借贷宝上大数据库吗
数据库中从语句
动态字段数据库
台服冒险岛服务器维护