0

我需要正则表达式方面的帮助,拜托。

我以为我已经愉快地与 Mantis 集成了 svn,直到遇到包含多个问题的签入问题。我正在使用 Mantisbt 1.2.5

我试图支持的提交消息可能像:“问题 #74 78 112 对第 485 行做了一些事情,只用了 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 个元素,它没有更新任何内容

任何建议表示赞赏。

吉姆

4

1 回答 1

1

我认为您不能仅使用正则表达式来做到这一点。重复捕获组仅捕获最后一次迭代(阅读有关重复捕获组与捕获重复组的更多信息)

否则我会这样做(请注意,我不是 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”,“”])
于 2011-05-02T22:49:50.720 回答