这篇文章主要介绍java中如何使用正则表达式中的组,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!组是括号划分的正则表达式,可以根据组的编号来引用某个组。组号为0表示整个表达式,组号1表示从左到右被第一个括号扩起的组,
这篇文章主要介绍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) {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) {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中如何使用正则表达式中的组”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!
--结束END--
本文标题: java中如何使用正则表达式中的组
本文链接: https://www.lsjlt.com/news/230013.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0