正则详细教程系列可以看此链接的文章哦
https://www.cnblogs.com/poloyy/category/1796055.html
首先,贪婪模式和非贪婪模式跟前面讲到的量词密切相关,我们先再来看看有哪些量词
只匹配一个结果
可以看到会匹配了三个空字符串,我们再通过 Python 代码看看输出结果
的确是会有三个空字符串
因为 * 代表 0 到多次,匹配 0 次就是空字符串
aaa 之间的空字符串咋没匹配上呢?
这就要说到我们的贪婪、非贪婪模式了
在正则中,表示次数的量词默认是贪婪的,在贪婪模式下,会尝试尽可能最大长度去匹配
a* 在匹配开头的 a 时,会尽量匹配更多的 a,直到第一个 b 不满足要求为止,匹配上三个 a,后面每次匹配时都得到空字符串
在量词后面加上 ? ,正则就变成了 a*?
贪婪匹配:匹配上从第一个 " 到最后一个 " 之间的所有内容
非贪婪匹配:找到符合要求的结果
这一小节基本都搬了《正则表达式入门课》的内容
正则:xy{1,3}z
文本:xyyz
匹配结果:xyyz
正则:xy{1,3}z
文本:xyyz
匹配结果:xyyz
独占模式和贪婪模式很像,独占模式会尽可能多地去匹配,如果匹配失败就结束,不会进行回溯,这样的话就比较节省时间
在量词后加上 +
正则:xy{1,3}z
文本:xyyz
匹配结果:xyyz
Python 和 Go 的标准库目前都不支持独占模式
pip install regex
>>> import regex 4
>>> regex.findall(r'xy{1,3}z', 'xyyz') # 贪婪模式
['xyyz']
>>> regex.findall(r'xy{1,3}+z', 'xyyz') # 独占模式
['xyyz']
>>> regex.findall(r'xy{1,2}+yz', 'xyyz') # 独占模式
[]
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有