Python正则表达式组不返回完整组

时间:2018-06-08 05:30:34

标签: python regex

regexlord = re.compile(r'([a-z])+(0)+(\d)+')
yomyomnumber = regexlord.search('spam003')
print (yomyomnumber.group(1))
print (yomyomnumber.group(2))
print (yomyomnumber.group(3)) 

所以我有一个spam003形式的字符串,我希望能够在最后更改数字(3)。因此,我想使用正则表达式并调用特定的组。但是,当我调用组时,组1仅打印(m),组2仅打印(0),组3仅打印(3)。因为这是贪婪的匹配,我期待第1组打印(垃圾邮件),第2组打印(00),第3组打印(3)。我很难理解为什么这不会发生。

2 个答案:

答案 0 :(得分:0)

第一组括号仅捕获每个字符的第一个实例。您需要将+符号移到括号内,以捕获与+匹配的每个字符。

([a-z]+)(0+)(\d+)

答案 1 :(得分:0)

我建议你改变这一行:

regexlord = re.compile(r'([a-z])+(0)+(\d)+')

到此:

regexlord = re.compile(r'([a-z]+)(0+)(\d)')

它应该工作:)