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安全错误
数据库的锁怎样保障安全
互联网科技股
湖南永感互联网科技有限公司
中关村互联网科技集团
美国互联网保险保险科技
科技和互联网公司
互联网科技有限公司经营范围
中资互联网科技
广州善班互联网科技
互联网 新科技
丰台科技园 互联网公司
成都仁贤领冠互联网科技有限公司
互联网实体化科技化
天速互联网络科技有限公司
须眉科技是互联网公司吗
互联网科技中介
贵州叶脉互联网科技有限公司所属行业
互联网数据科技专业
江苏苏星互联网科技有限公司
江苏互联网智能科技软件
富国互联网科技002692
保险科技 互联网保险
上海睿民互联网科技有限公司
互联网科技垄断
互联网医疗科技
紫鲸互联网科技
互联网科技公司有哪些
中正互联网科技招聘
互联网科技生活的内容
富国互联网科技创新基金
抖集互联网科技技术咨询