【发布时间】:2017-12-13 01:52:48
【问题描述】:
Pivotal Tracker 可以解析 git 提交并相应地更改票证状态。我正在编写一个执行 post-commit 的 PHP 脚本。它搜索提交消息,如果找到正确的 Pivotal Ticket 引用,则将其发布到 PT api。我想弄清楚正则表达式有点疯狂。
目前我有:
preg_match('/^\[#([0-9]{1,16})\]/', $commit['message'], $matches);
所以最简单的提交示例通过了:
[#12345678] Made a commit
但我需要通过的是:
1: [finished #12345678] Made a commit //'fixed', 'complete', or 'finished' changes the status
2: I made a commit [#12345678] to a story //Can occur anywhere in the commit
【问题讨论】:
-
取消锚点
^,因为您的引用不是从字符串的开头开始的。也许你想要\[(?:(?:finished|fixed|complete) )?)#([0-9]{1,16})\] -
在括号内的表达式中,
#之前的字符串是否不是finished、complete或fixed?您是否只想捕获主题标签前缀的数字子字符串,还是想要存在的前导词?请包括任何需要避免的“陷阱”字符串。请说明您的预期结果,以便我们提供真正完善的解决方案。您的问题越好,我们的回答质量就越高。 -
是否有不应该匹配的括号表达式?
标签: php regex preg-match pivotaltracker smart-commits