我正在绞尽脑汁地试图从正则表达式中获取捕获值!我认为这很简单,但我只是没有看到我期望的结果。
这是我的代码,它枚举所有组和所有匹配项,并将它们打印出来:
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比健康时间更长,并且无法发现我错过了什么:(
最佳答案
我也觉得这有点奇怪,但你必须改变它
for (var i = 0; i <= match.groupCount; i++) {
^
我真的不知道,但我是这样解释的。实际组从 1 开始,match.group(0)
是整个比赛。
关于regex - 如何从 "/test/(\d+)"等正则表达式访问捕获的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25961074/