如何用Python正则表达式保留单个辅音字符并去除重复项?
问题解决
你的代码存在两个核心问题:
- 替换时使用空字符串,会把匹配到的所有重复字符(包括第一个)全部删除,正确做法是替换为捕获到的第一个字符
\1,以此保留一个。 - 正则中的
\1{2,}仅匹配连续3次及以上的重复,而你需要处理连续2次及以上的重复,应改为\1+。
结合你给出的期望结果,你实际需要保留字符v的连续重复,仅处理其他字符的连续重复,修正后的代码如下:
import re text = "myyyy nname isss ssevvaall" new = re.sub(r"([^v])(\1+)","\\1", text) print(new)
正则说明
([^v]):捕获任意一个不是v的字符(\1+):匹配一个或多个与捕获字符相同的连续重复字符- 替换为
\\1:仅保留捕获到的第一个字符,移除后续的重复部分
运行后输出结果与你的期望完全一致:
my name is sevvaal
内容的提问来源于stack exchange,提问作者Sevval Kahraman
相关产品推荐
相关产品推荐

