>>> import re>>> re.sub(r'([a-z])1+', r'1', 'ffffffbbbbbbbqqq')'fbq'
的
()周围的
[a-z]指定 捕获组 ,然后将
1(一个 反向引用 在图案和替换两者)指的是第一个捕获组的内容。
因此,正则表达式显示为“查找字母,然后出现一个或多个相同字母”,然后将整个找到的部分替换为单个出现的找到的字母。
旁注…
您的示例代码
a实际上是错误的:
>>> re.sub('a*', 'a', 'aaabbbccc')'abababacacaca'您确实希望使用
'a+'regex而不是
'a*',因为
*运算符匹配出现的“
0个或多个”,因此将匹配两个非
a字符之间的空字符串,而
+运算符匹配的是“ 1个或多个”。



