You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中用正则替换大小写重复的连续字符?

解决Python正则替换大小写交替的连续重复字符问题

嘿,这个场景我太熟悉了!你原来的正则r"([a-zA-z])\1"只能匹配大小写完全相同的连续重复字符(比如aa或AA),但对Aa这种大小写交替的情况就无能为力了。不过别担心,一行代码就能搞定!

核心解决方案:忽略大小写匹配

只需要给re.sub()加上flags=re.IGNORECASE标志,让正则引擎在匹配时忽略大小写,这样\1就会匹配和捕获组字符相同(不管大小写)的连续重复项:

import re

original_word = "Aabrakadaabra"
fixed_word = re.sub(r"([a-zA-Z])\1", r"\1", original_word, flags=re.IGNORECASE)
print(fixed_word)  # 输出:Abrakadabra

这个写法正好满足你的需求——把开头的Aa替换成单个A,得到预期的Abrakadabra。

进阶:处理多个连续重复的情况

如果你的文本里有多个连续重复的字符(比如Aaa、AaA或者aAAa),可以把正则改成r"([a-zA-Z])\1+",这样能一次性匹配所有连续的相同字符(忽略大小写),替换效率更高:

import re

original_word = "AaaabrakadAaabra"
fixed_word = re.sub(r"([a-zA-Z])\1+", r"\1", original_word, flags=re.IGNORECASE)
print(fixed_word)  # 输出:Abrakadabra

这里的\1+表示匹配一个或多个和捕获组相同的字符(因为有IGNORECASE,大小写不影响匹配),不管重复多少次,都能直接替换成单个字符。

内容的提问来源于stack exchange,提问作者Fırat Uyulur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:33:36