integersの一部を文字列で返すためのphp regex
質問
正規表現の助けが必要です。
複数の問題を含むチェックインの問題に遭遇するまで、SVNがマンティスと喜んで統合されたと思いました。 MantisBT 1.2.5を使用しています
私がサポートしようとしているコミットメッセージは、「#74 78 112は3時間27分しかかからなかった485行に何かをしました」。 regexpが戻る必要があります[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つの要素を返しているようです。
どんなアドバイスにも感謝しています。
ジム
解決
私はあなたがちょうど正規表現でそれをすることができるとは思わない。繰り返されるキャプチャグループは、最後のイテレーションだけをキャプチャします(続きを読む キャプチャグループを繰り返し、繰り返しグループをキャプチャします)
そうでなければ私はこのようにそれをします(私は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」、 ""))
所属していません StackOverflow