正则表达式贪婪模式的一些疑问?

正则表达式贪婪模式的一些疑问?

import re  

text = "aoooooooabbbboooooaabaabay1111"

find_arr = re.findall(r".*(a.*a).*", text)

find_arr2 = re.findall(r"aa", text)

print(find_arr)

print(find_arr2)

输出:

['aba']

['aa', 'aa']

为什么find_arr2可以匹配到text文本的所有的相关项,
而find_arr只匹配到了text最后一个相关项?
aoooooooa和aa不也符合find_arr正则吗,
我理解的贪婪模式应该aoooooooabbbboooooaabaaba都能匹配到,
不知道是哪里理解有问题?


回答:

.*(a.*a).* 第一个 .* 就是贪婪匹配
所以 .* 实际匹配 aoooooooabbbboooooaaba(a.*a) 实际匹配的是最后面的3个字母 aba

你想要的要改成 .*?(a.*a).*?


回答:

r".*(a.*a).*"

^^

第一个 .* 是贪婪的,吃掉了 aoooooooabbbboooooaaba

以上是 正则表达式贪婪模式的一些疑问? 的全部内容, 来源链接: utcz.com/p/937740.html

回到顶部