我需要正则表达式的帮助。
我以为我很高兴与Mantis融为一体,直到我遇到包含多个问题的签到问题。我正在使用Mantisbt 1.2.5
我试图支持的提交消息可能是:“问题#74 78 112做了一些事情,只需要花费3小时27分钟就行了”。我需要我的正则表达式返回[74,78,112](但不是[485,7,27])。
我的'当前'$g_source_control_regexp = '/\b(bug|issue)[s]{0,1}\s*[#]{0,1}\s*(\d+\s+)+/i'
似乎正在返回'问题#74 78 112'中没有更新任何内容的1个元素
任何建议表示赞赏。
吉姆
答案 0 :(得分:1)
我不认为只用正则表达式就可以做到这一点。重复捕获组仅捕获最后一次迭代(有关Repeating a Capturing Group vs. Capturing a Repeated Group的更多信息)
否则我会这样做(注意我不是PHP程序员......):
str.match(/\b(?:bug|issue)s?\s*#?\s*((?:\d+\s+)+)/i)[1].trim().split(/\s+/)
result: ["74", "78", "112"]
(?:)
是非捕获组matches[0]
通常是完整模式匹配matches[1]
是第一个被捕获的群组(本例中唯一一个)trim()
来消除末尾的额外空间(没有它你会在末尾得到一个空组[“74”,“78”,“112”,“”])< / LI>