java中如何使用正则表达式中的组
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍java中如何使用正则表达式中的组,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!组是括号划分的正则表达式,可以根据组的编号来引用某个组。组号为0表示整个表达式,
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
湖北九亚互联网络科技有限公司
天津市摩尔互联网科技
高科技互联网
互联网电商科技
中资互联网科技
深圳齐家互联网科技
互联网科技ppt模板
易通互联网络科技有限公司
北京禾田雨橡互联网科技
衡水科技产业互联网平台
农村开互联网科技讲堂
温州喔噻互联网科技有限公司
中国的互联网科技企业的崛起
湖北码尼互联网科技有限公司电话
江阴互联网智能科技产品进口
用友工业互联网科技发展
吉林省码上互联网科技电话
湖北辰鑫科技互联网
第三届互联网大会安防黑科技
现代互联网科技公司
麻工互联网科技
佰商互联网科技有限公司
互联网科技类展会
科技伦理 互联网公司
科技与互联网的利与弊
互联网教育科技公司vipkid
迪庆互联网科技招生
黑科技 体验场景 互联网大会
昆明中奇联合互联网科技
悟空问答互联网科技