Java正则表达式捕获组索引

我有以下一行,


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()一种更简单的方式来完成。


忽然笑
浏览 670回答 3
3回答

www说

对于我们其余的人这是一个简单而清晰的例子正则表达式: ([a-zA-Z0-9]+)([\s]+)([a-zA-Z ]+)([\s]+)([0-9]+)串: "!* UserName10 John Smith 01123 *!"group(0): UserName10 John Smith 01123group(1): UserName10group(2):  group(3): John Smithgroup(4):  group(5): 01123如您所见,我创建了五个组,每个组都用括号括起来。我包括了!*和*!使其更清晰。请注意,这些字符都不在RegEx中,因此不会在结果中产生。Group(0)仅给您整个匹配的字符串(我的所有搜索条件都放在一行中)。第1组在第一个空格之前停止,因为搜索条件中未包含空格字符。第2组和第4组只是空白,在这种情况下,它实际上是一个空格字符,但也可以是制表符或换行符等。第3组包含空格,因为我将其放在搜索条件中...等。希望这是有道理的。

拉丁的传说

括号()用于启用正则表达式词组。该group(1)包含是括号之间的字符串,(.*)所以.*在这种情况下,并group(0)包含整个匹配的字符串。如果您有更多组(读取(...)),它将与下一个索引(2、3等)一起放入组。
打开App,查看更多内容
随时随地看视频慕课网APP