Python正则表达式re.match(r"(..)+", "a1b2c3")匹配结果为什么是”c3”?
2023-09-27 14:26:59 时间
在才开始学习正则表达式处理时,老猿对正则表达式:re.match(r"(…)+", “a1b2c3”)
返回的匹配结果为“c3”没有理解,学习了贪婪模式的处理之后才明白,因为“+”的匹配是贪婪的,在匹配到结果后并不会停止,会继续匹配,直到匹配不到时再回退到上一个匹配位置作为匹配结果,因此"a1b2c3")匹配(…)时,先后匹配到“a1”、“b2”、“c3”,然后匹配失败,回退到上一次匹配结果“c3”,因此最后匹配结果是“c3”,如果是非贪婪模式则匹配结果是“a1”。
>>> m = re.match(r"(..)+", "a1b2c3") #贪婪模式
>>> m.groups()
('c3',)
>>> m = re.match(r"(..)+?", "a1b2c3") #非贪婪模式
>>> m.groups()
('a1',)
关于贪婪模式和非贪婪模式请参考:
第11.8节 Pytho正则表达式的重复匹配模式及元字符“?”、 “”、 “+”功能介绍
第11.9节 Python正则表达式的贪婪模式和非贪婪模式
第11.10节 Python正则表达式的非贪婪模式的重复匹配:’?’, ‘+?’,和 ‘??’
老猿Python,跟老猿学Python!
博客地址:https://blog.csdn.net/LaoYuanPython
请大家多多支持,点赞、评论和加关注!谢谢!
相关文章
- 在apache环境中使用 python stock 请求遇到error: [Errno 13] Permission denied
- Python 正则表达式
- Python中的正则表达式
- Python_11-正则表达式
- Python笔记:正则表达式方法
- Python 练习:使用 * 输出直角三角形
- win64位安装python-mysqldb1.2.5
- 学习 正则表达式 js java c# python 通用
- python模块 -- re正则表达式模块详解
- Python正则表达式re.findall一个有趣的现象
- 第11.19节 Python 中正则表达式的扩展功能:前视断言和前视取反
- Python正则表达式re.search(r'*{3,8}','*****')和re.search('*{3,8}','*****')的匹配结果为什么相同?
- Python正则表达式处理中的匹配对象是什么?
- FFMpeg无损合并视频的多种方法 python
- 中英字幕 | 最棒的 Python 学习视频送你
- Python基础——列表与元组
- Python 第7章课后习题参考答案
- python 正则表达式 re
- Python基础(六):运算符介绍