java中如何使用正则表达式中的组
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要介绍java中如何使用正则表达式中的组,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!组是括号划分的正则表达式,可以根据组的编号来引用某个组。组号为0表示整个表达式,
千家信息网最后更新 2025年01月18日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安全错误
数据库的锁怎样保障安全
办公厅通信网络技术服务中心
软件开发 毕业论文模板
上海合发网络技术有些公司
软件开发软件测试开发难
合耀(上海)网络技术
东营染色软件开发公司
怎样修复网络安全风险
服装cad软件开发
学电脑网络技术这方面好吗
芜湖荻帆网络技术有限公司
空间数据库与gis
国家安全和网络安全认识
刷卡机提示服务器连接失败
网络安全培训班今天开班
软件开发员进阶路线
数据库自动化应用
网络安全基础设施的重要性
网络安全保密 会议纪要
数据库技术西安交通大学出版社
服务器进不了ubuntu
数据库架构的变迁
襄阳软件开发税务筹划怎么做
集团公司网络安全知识答题答案
广州飞旭软件开发公司
中国金币网络技术有限公司
校园网络安全宣传单
软件开发员事迹报告
什么是dtc数据库
软件开发绩效工资占比
evias媒体管理服务器