首页 > 编程语言 > 详细

Python 正则表达式 捕获组和非捕获组

时间:2020-05-28 13:25:33      阅读:124      评论:0      收藏:0      [点我收藏+]

参考链接:https://www.cnblogs.com/kevin-yuan/archive/2012/11/11/2765340.html

我希望的匹配结果是这样的

>>> d
a1a2a3a4a5a6
>>> re.findall(r(?:\w\d){5},d)
[a1a2a3a4a5]

但是一开始是这样的

>>> d
a1a2a3a4a5a6
>>> re.findall(r(\w\d){5},d)
[a5]

发现使用分组时错误的,经过从网络查找,发现是因为捕获组和非捕获组的原因。(...)是捕获组,将括号内的规则视为一个整体,有一个回溯引用,将所有匹配的分组保存在内存中,引用分组的时候引用匹配出的文本。非捕获组(?:...)仅仅匹配文本,但是不会捕获文本保存到内存中。但是关于回溯的引用,暂时还没有理解明白。网络中很多地方使用\1来引用捕获组的子表达式相对位置,但是我使用的是{},也回溯成功了。网络中给出的实例运行后得到的结果和实例给出的结果不一致。

Python 正则表达式 捕获组和非捕获组

原文:https://www.cnblogs.com/learning-logs/p/12979493.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!