为了账号安全,请及时绑定邮箱和手机立即绑定

Java正则表达式捕获组索引

Java正则表达式捕获组索引

忽然笑 2019-11-06 10:53:20
我有以下一行,typeName="ABC:xxxxx;";我需要拿这个词ABC,我写了以下代码片段,Pattern pattern4=Pattern.compile("(.*):");matcher=pattern4.matcher(typeName);String nameStr="";if(matcher.find()){    nameStr=matcher.group(1);}所以,如果我说group(0)得到,ABC:但是如果我说group(1)是ABC,那么我想知道这是什么0和1意味着什么呢?如果有人可以用很好的例子向我解释,那会更好。正则表达式模式中包含一个:,为什么group(1)结果忽略了它?组1是否检测到括号内的所有单词?因此,如果我\\s*(\d*)(.*)再加上两个括号,例如:,那么会有两个小组吗?group(1)将退还(\d*)零件并group(2)退还(.*)零件?给出该代码段的目的是为了消除我的困惑。这不是我要处理的代码。上面给出的代码可以用String.split()一种更简单的方式来完成。
查看完整描述

3 回答

?
www说

TA贡献1775条经验 获得超8个赞

对于我们其余的人

这是一个简单而清晰的例子


正则表达式: ([a-zA-Z0-9]+)([\s]+)([a-zA-Z ]+)([\s]+)([0-9]+)


串: "!* UserName10 John Smith 01123 *!"


group(0): UserName10 John Smith 01123

group(1): UserName10

group(2):  

group(3): John Smith

group(4):  

group(5): 01123

如您所见,我创建了五个组,每个组都用括号括起来。


我包括了!*和*!使其更清晰。请注意,这些字符都不在RegEx中,因此不会在结果中产生。Group(0)仅给您整个匹配的字符串(我的所有搜索条件都放在一行中)。第1组在第一个空格之前停止,因为搜索条件中未包含空格字符。第2组和第4组只是空白,在这种情况下,它实际上是一个空格字符,但也可以是制表符或换行符等。第3组包含空格,因为我将其放在搜索条件中...等。


希望这是有道理的。


查看完整回答
反对 回复 2019-11-06
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

括号()用于启用正则表达式词组。


该group(1)包含是括号之间的字符串,(.*)所以.*在这种情况下,


并group(0)包含整个匹配的字符串。


如果您有更多组(读取(...)),它将与下一个索引(2、3等)一起放入组。


查看完整回答
反对 回复 2019-11-06
  • 3 回答
  • 0 关注
  • 666 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信