正则表达式贪婪模式的一些疑问?
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