python中r'(\w)(?=.*\1)为什么表示查找字符串中重复出现的字符

如题所述

第1个回答  2021-01-28

(\w)表示匹配任意一个单词字符并捕获到分组,

\1表示匹配(\w)捕获的分组,

(?=.*\1)表示这个重复出现的字符之间可以有0至多个字符(贪婪模式),

但这个扫描不会改变当前的扫描位置,

即下一个扫描位置从(\w)捕获的字符的下一个字符开始,这样就不会有遗漏。

比如:

s='abcba'开始捕获a,

下一个扫描位置是第二个字符b,

接着捕获b,

下一个扫描位置是c...,

这样就能找到所有重复出现的字符。

下图是一个例子:

相似回答