我是靠谱客的博主 真实酒窝,最近开发中收集的这篇文章主要介绍Python正则表达式re.match(r"(..)+", "a1b2c3")匹配结果为什么是”c3”?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在才开始学习正则表达式处理时,老猿对正则表达式: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
请大家多多支持,点赞、评论和加关注!谢谢!

最后

以上就是真实酒窝为你收集整理的Python正则表达式re.match(r"(..)+", "a1b2c3")匹配结果为什么是”c3”?的全部内容,希望文章能够帮你解决Python正则表达式re.match(r"(..)+", "a1b2c3")匹配结果为什么是”c3”?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部