我也尝试了[a-zA-Z]{2,}-\d+
,但结果相同
def verify_commit_text(tags):
for line in tags:
if re.match('^NO-TIK',line):
return True
elif re.match('^NO-REVIEW', line):
return True
elif re.match('[a-zA-Z]-[0-9][0-9]', line):
return True
else:
return False
if __name__ == '__main__':
commit_text_verified = verify_commit_text(os.popen('hg tip --template "{desc}"'));
#commit_text_verified = verify_commit_text(os.popen('hg log -r $1 --template "{desc}"'));
if (commit_text_verified):
sys.exit(0)
else:
print >> sys.stderr, ('[obey the rules!]')
sys.exit(1);
如果我使用正则表达式"JIRA-1234"
:
elif re.match('[a-zA-Z]-[0-9][0-9]', line):
似乎没有用,我得到了:
[obey the rules!]
在stdout上。
答案 0 :(得分:2)
正则表达式正如您指定的那样工作..它正在搜索 1 字符和 1 数字。你可能想要像
这样的东西re.match(r'[a-zA-Z]+-\d+\Z', line)
此外,总是在正则表达式字符串前加上“r”,如上所述。或者它会咬你。
答案 1 :(得分:1)
由于您想要匹配一个或多个字母和数字,您需要使用+
,如下所示:
r'[a-zA-Z]+-\d+'
您还可以使用{}
指定一定数量的字母(例如):
r'[a-zA-Z]{2,}-\d{4}'
此处,{2,}
表示2个或更多,{4}
表示正好4,{,3}
表示0-3,{1,5}
表示1-5个包含。