贪婪模式和非贪婪模式

分类: 源代码 > Python

贪婪模式和非贪婪模式

在python的正则表达式中,默认是贪婪模式,尽可能多的匹配

import re

#在python的正则表达式中,默认是贪婪模式,即京可能多的匹配
print(re.search(r'm.*a','m123a456a78'))
#<re.Match object; span=(0, 9), match='m123a456a'>
#按道理匹配该规则的有两个,即:m123a和m123a456a,因为python默认为贪婪模式,所以匹配第二个

#可以在贪婪模式后面添加 ? 可以将贪婪模式转换成为非贪婪模式,尽可能少的匹配
print(re.search(r'm.*?a','m123a456a78'))
#<re.Match object; span=(0, 5), match='m123a'>

#1.两个 ? 的使用,在python中不支持两个以上的?在一个分组内使用
print(re.search(r'aa(\d??)(.*)','aa2343ddd').group(1))
#空
#当两个?同时使用时,最后一个问号作为贪婪模式的关闭操作
来源:原创 发布时间:2022-05-18 18:04:26
User Image
来自广东省广州市的网友2022-05-20 23:31:03 终于理解了