我试图从正则表达式中获取捕获值时撕裂我的头发!我认为这将是微不足道的,但我只是没有看到我期待的结果。
这是我的代码,它列举了所有群组和所有匹配项,并打印出来:
var matches = new RegExp(r"/test/(\d+)").allMatches("/test/1");
matches.forEach((match) {
for (var i = 0; i < match.groupCount; i++) {
print(match.group(i));
}
});
我希望输出包含/test/1
和1
,但唯一的输出是:
/test/1
我确定我忽略了一些简单的事情;但我一直盯着the docs的时间比健康的时间长,并且无法发现我所遗漏的东西:(
答案 0 :(得分:4)
我发现这有点奇怪,但你必须改变这个
for (var i = 0; i <= match.groupCount; i++) {
^
我真的不知道,但我这样解释。实际组以1开头,match.group(0)
是整个匹配。