Java不允许您访问重复捕获组的单个匹配项。
Tim Pietzcker提供的代码也可以为您提供帮助。如果您稍作修改,并为第一个数字添加特殊情况,则可以使用以下代码:
String target = "31,5,46,7,86";Pattern compileFirst = Pattern.compile("(?<number>[0-9]+)(,([0-9])+)*");Pattern compileFollowing = Pattern.compile(",(?<number>[0-9]+)");Matcher matcherFirst = compileFirst.matcher(target);Matcher matcherFollowing = compileFollowing.matcher(target);System.out.println("matches: " + matcherFirst.matches());System.out.println("first: " + matcherFirst.group("number"));int start = 0;while (matcherFollowing.find(start)) { String group = matcherFollowing.group("number"); System.out.println("following: " + start + " - " + group); start = matcherFollowing.end();}输出:
matches: truefirst: 31following: 0 - 5following: 4 - 46following: 7 - 7following: 9 - 86



