via我测试了我的正则表达式
([\S]*)[\[]([\d]+)[-]([\d]+)[\]]
但是当我在Java中使用它时,它并没有返回给我最后找到的组。
例如:值 - 索引[1-9]
通过regex101 - 它返回我"索引"," 1"," 9"
但是在Java中 - "索引"和" 1"仅
这是我使用的代码:
String regex = "([\\S]*)[\\[]([\\d]+)[-]([\\d]+)[\\]]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
if(matcher.find()){
for (int i = 0; i < matcher.groupCount(); i++)
System.out.println(matcher.group(i));
}
任何线索,为什么会发生这种情况?
答案 0 :(得分:4)
使用matcher.group(int)
时,捕获组编号从1开始,而不是0.从the docs开始:
捕获组从左到右编制索引,从1开始。组零表示整个模式,因此表达式
m.group(0)
等同于m.group()
。