有两种不同的代码会产生两种不同的结果,但我不知道这些差异是如何产生的。
>>>re.findall('[a-z]+','abc')
['abc']
这个与小组:
>>> re.findall('([a-z])+','abc')
['c']
为什么第二个代码会产生字符c
?
答案 0 :(得分:0)
在您的上一个正则表达式模式(([a-z])+
)中,您正在重复capturing group(()
)。这样做只会返回最后一次迭代。所以你得到最后一个字母,即c
但是在您的第一个模式([a-z]+
)中,您正在重复character class([]
),这与捕获组的行为不同。它返回所有迭代。