php Regex返回String中的一些整数

时间:2011-05-02 22:14:30

标签: php regex svn mantis

我需要正则表达式的帮助。

我以为我很高兴与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个元素

任何建议表示赞赏。

吉姆

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>