0

我正在尝试re.findall(pattern, string)从 Git Log 行中提取 Jira Key。我的示例输入类似于:

58df2ac Merge remote-tracking branch 'origin/ABC-1234' into release-1.1.0
df40f59 Merge branch 'ABC-2345' into release-1.1.1

我想摆脱的只是ABC-1234& ABC-2345

我知道我想使用的逻辑是以开头ABC-并一直到它找到一个非数字,如引号、空格或字母。

任何帮助确定正确的正则表达式将不胜感激。

谢谢

4

2 回答 2

3

这将起作用:

 re.findall('ABC-[0-9]+', string)

[0-9]指定任何阿拉伯数字。最好是\d因为后者的行为取决于活动的语言环境。指定前+一个模式必须匹配一次或多次。

于 2013-05-11T22:04:57.883 回答
1

这有效:

import re

st='''\
58df2ac Merge remote-tracking branch 'origin/ABC-1234' into release-1.1.0
df40f59 Merge branch 'ABC-2345' into release-1.1.1'''

for line in st.splitlines():
    print re.findall(r"'.*ABC-(.*)'",line)

或者,如果您知道 'ABC-XXX' 只是数字,那就更好了:

    print re.findall(r"'.*ABC-(\d+)",line)

无论哪种情况,打印:

['1234']
['2345']
于 2013-05-11T22:12:17.333 回答