regex - 如何从 "/test/(\d+)"等正则表达式访问捕获的值?

标签 regex dart

我正在绞尽脑汁地试图从正则表达式中获取捕获值!我认为这很简单,但我只是没有看到我期望的结果。

这是我的代码,它枚举所有组和所有匹配项,并将它们打印出来:

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/11,但唯一的输出是:

/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/

相关文章:

javascript - 当作为字符串传入时,为什么这个 RegExp 不起作用?

flutter - StreamBuilder ListView在首次加载时从Firestore返回空列表

firebase - 在 Flutter 中使用 FirebaseAuth 检查用户的身份验证状态

dart - Flutter:为什么包的变化(flutter-tools)没有影响(在 flutter doctor 中)?

flutter - 如何在 flutter 中更改按钮的大小?

javascript - 多行字符串中间的正则表达式?

iPhone:UITextField 中的正则表达式和文本输入验证失败

php - 在 preg_replace 中使用 £ 作为定界符可以吗?

php - 使用词性标注否定句子

flutter - Flutter 中的无效日期格式 2022 年 11 月 14 日