Python正则表达式捕获组和⾮捕获组
参考链接:
我希望的匹配结果是这样的
>>> d
'a1a2a3a4a5a6'
>>> re.findall(r'(?:\w\d){5}',d)
['a1a2a3a4a5']
但是⼀开始是这样的
>>> d
'a1a2a3a4a5a6'
>>> re.findall(r'(\w\d){5}',d)
['a5']python正则表达式不包含
发现使⽤分组时错误的,经过从⽹络查,发现是因为捕获组和⾮捕获组的原因。(...)是捕获组,将括号内的规则视为⼀个整体,有⼀个回溯引⽤,将所有匹配的分组保存在内存中,引⽤分组的时候引⽤匹配出的⽂本。⾮捕获组(?:...)仅仅匹配⽂本,但是不会捕获⽂本保存到内存中。但是关于回溯的引⽤,暂时还没有理解明⽩。⽹络中很多地⽅使⽤\1来引⽤捕获组的⼦表达式相对位置,但是我使⽤的是{},也回溯成功了。⽹络中给出的实例运⾏后得到的结果和实例给出的结果不⼀致。