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

Python中如何用正则将连续重复字符替换为等数量的其他字符

连续i替换为等长*的正则实现方案

原代码问题原因

你原来的写法r'i{3}'只能匹配刚好连续3个i的片段,当连续i的数量大于3时,只会替换前3个,剩下的i会被保留,所以才会出现str***iing这类不符合预期的结果。

正确实现代码

import re
text = "An example striiiiing with other words"
# 匹配连续出现≥3次的i,re.I保证同时匹配大小写i
pattern = re.compile(r'i{3,}', re.I)
# 替换回调:将匹配到的连续i转换为等长度的*
out_put = pattern.sub(lambda match: '*' * len(match.group()), text)
print(out_put)
# 输出结果:An example str******ng with other words

实现要点说明

  • 正则规则i{3,}表示匹配连续出现至少3次的i,没有上限,可覆盖任意长度≥3的连续i场景
  • re.sub支持传入函数作为替换参数,每次匹配成功后会将匹配结果对象传入该函数,函数返回值即为替换后的内容,这里通过len(match.group())拿到连续i的长度,生成对应数量的*即可保证替换前后长度一致。

内容的提问来源于stack exchange,提问作者Rabindra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:57:03