匹配器没有返回正确的组号
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));
}
任何线索,为什么出现这种情况?
当使用matcher.group(int)
,捕获组数从1开始,0。从the docs不:
捕获组被索引从左到右,从1开始。零组表示整个模式,因此表达式
m.group(0)
等于m.group()
。
实际上,有第0组,比赛。 –
@WiktorStribiżew - 是的。感谢您指出了这一点。我只是从文档中摘录适当的摘录。为了在技术上正确,我修改了我的答案,特别说明了“捕获组数”。 –
今天我学到了一些新东西。当然,我不会在Java中做很多正则表达式。谢谢。 – DejaVuSansMono
请说明如何在Java代码中定义正则表达式。 –
@WiktorStribiżew([\ S] *)[\ []([\ d] +)[ - ]([\ d] +)([\]]) – DreadAngel