我有以下一行,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组包含空格,因为我将其放在搜索条件中...等。
希望这是有道理的。

拉丁的传说
TA贡献1789条经验 获得超8个赞
括号()用于启用正则表达式词组。
该group(1)包含是括号之间的字符串,(.*)所以.*在这种情况下,
并group(0)包含整个匹配的字符串。
如果您有更多组(读取(...)),它将与下一个索引(2、3等)一起放入组。
添加回答
举报
0/150
提交
取消