"""
# 筛选过的区域不会再次筛选
# 确保O(N)算法 / 非贪婪匹配不一定是最小的
"""
import re
str = 'abcaaabb'
print(re.findall('a.*?b', str))
str = 'aaab'
print(re.findall('a(.*?)b', str))
str = 'abcaabaaacb' # 非贪婪匹配: 右边界从右开始
print(re.findall('a.*?b', str))
str = 'abcaabaaacbc' # 贪婪匹配:右边界从右开始
print(re.findall('a.*b', str))
输出:
['ab', 'aaab']
['aa']
['ab', 'aab', 'aaacb']
['abcaabaaacb']