首页 > 解决方案 > 如何在 Sublime 语法中捕获重复组

问题描述

我搜索了高低,但无法找到解决方案。

我需要用 subline-syntax 解析一个语句。该声明是这样的

和(#,#[,#]*)

换句话说,关键字 Sum 必须后跟(然后是一对以逗号分隔的数字和零个或多个以逗号为前缀的数字,最后以 结束)。

我正在使用 regex101 来测试 python 正则表达式(我读过 sublime 的正则表达式是基于它的)。

https://regex101.com/r/TzKxIp/2

标签: regex

解决方案


要查找捕获组中的所有数字,您可以使用并交替使用\G以获得迭代匹配。

(?:\bSum\((?=\d+(?:,\d+)*\))|\G(?!\A))\K(\d+),?

正则表达式演示

解释

  • (?:非捕获组
    • \bSum\(一个单词边界,后跟 Sum(
    • (?=积极的前瞻性断言接下来的内容
      • \d+(?:,\d+)*\)匹配一个数字,然后重复零次或多次逗号和一个数字,然后)
    • )关闭正向前瞻
    • |\G(?!\A)或者在上一场比赛结束时断言位置
  • )关闭非捕获组
  • \K忘记匹配的内容
  • (\d+),?匹配带有可选逗号的数字

推荐阅读