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)。我很难理解为什么这不会发生。
答案 0 :(得分:0)
第一组括号仅捕获每个字符的第一个实例。您需要将+
符号移到括号内,以捕获与+
匹配的每个字符。
([a-z]+)(0+)(\d+)
答案 1 :(得分:0)
我建议你改变这一行:
regexlord = re.compile(r'([a-z])+(0)+(\d)+')
到此:
regexlord = re.compile(r'([a-z]+)(0+)(\d)')
它应该工作:)