python正则表达式提取文本的一些小疑问

比如给一个字符串'aabb',我们期望抽取所有以a开头b结尾的所有最小文本,所以'aabb'期望得到的是'aab'和'abb',但是通过python中re.findall('a.*?b','aabb')得到的只有'aab',想问下有没有什么解决方法?

使用右断言,可以使使一个字符参与多次匹配

例如:

import re

a = 'aaubb axb acb'

b = re.finditer('(?=(a.*?b))', a)
for m in b:
    print(m.group(1))
aaub
aub
axb
acb

参考GPT和自己的思路:你遇到的问题是由于正则表达式的默认贪婪匹配导致的,也就是说,正则表达式会尽可能匹配更多的文本。解决方法是使用非贪婪匹配,可以在正则表达式中加上"?"来实现。修改你的正则表达式为'a.*?b',就可以得到所有符合要求的最小文本了。