我搜索过很多,但一直没有找到解决方案。
我需要用子行语法分析一条语句。那样的话就是这样
总和(#,#[,#] *)
换句话说,关键字Sum必须后跟(然后是一对数字,中间用逗号分隔,零个或多个数字前加逗号并最后以)结束。
我正在使用regex101来测试python regex(我读过的Sublime regex所基于的内容)。
答案 0 :(得分:0)
要查找捕获组中的所有数字,可以使用alternation和\G
与Regex demo进行迭代匹配。
(?:\bSum\((?=\d+(?:,\d+)*\))|\G(?!\A))\K(\d+),?
说明
(?:
非捕获组
\bSum\(
一个单词边界,后跟Sum((?=
积极肯定地断言以下内容
\d+(?:,\d+)*\)
匹配一个数字,然后重复零个或多个逗号,再匹配一个数字,后跟)
)
积极回望|\G(?!\A)
或在上一场比赛结束时声明位置)
关闭非捕获组\K
忘记匹配的内容(\d+),?
将数字与可选的逗号匹配