带前缀的正则表达式行匹配

2024-05-19 14:14:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个GitHub钩子,以便在提交消息与特定字符串匹配时移动一些Zenhub问题的位置。我想要达到的是:

Progress #121, #128, #50

我想在这里提取问题编号:121,128,50和行必须有一个进度前缀。问题必须以逗号分隔,以#开头,并且可以有任意数量的前缀空格。你知道吗

到目前为止我所取得的成就是

^(?:Progress)(?:\s*#(\d+),?)+$

这只给了我最后一个捕获组,这里是50。你知道吗

我想知道我哪里出错了,如何达到预期的结果。非常感谢。你知道吗

EDIT:我想使用regex,因为我也想解决这些额外的情况:“Progress”可以从字符串的中间开始,也可以从任何一行开始。如果“Progress”从字符串的中间开始,那么我必须检查它后面是否有任何问题编号。你知道吗

因此,如果有任何答案可以用Python(而不是regex)优雅地解决这个问题,我们也欢迎。你知道吗


Tags: 字符串答案github消息数量情况edit钩子
1条回答
网友
1楼 · 发布于 2024-05-19 14:14:26

使用正则表达式匹配整个模式,同时从中提取重复的子模式。我不确定你能不能同时做这两件事——要么是一件,要么是另一件。你知道吗

如果您使用的是Python,我建议您简化这个过程。使用一个简单的str.startswith检查,然后用regex提取问题号。你知道吗

if string.startswith('Progress'):
    return re.findall('#(\d+)', string)

它应该返回['121', '128', '50']。如果您正在使用JavaScript,则可以采用类似的方法。你知道吗

相关问题 更多 >