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

如何用正则表达式将重复超20次的字符替换为10次重复?

简化重复字符替换为固定次数的实现方式

需求说明

当字符串中任意字符连续重复次数超过20次时,将其替换为该字符的10次重复。例如把'adfajlkjl a sd=============================================== READFadfa'转换为'adfajlkjl a sd========== READFadfa'。

原暴力解法的问题

原实现需要手动重复写10次反向引用\1,写法冗余且不易维护。这里提供两种更简洁的实现方式:


方法1:用字符串乘法简化替换模板

直接利用Python的字符串乘法特性,把r'\1'重复10次,不用手动敲10遍:

import re
string1 = 'adfajlkjl a sd=============================================== READFadfa'
# 匹配任意连续重复20次及以上的字符
pattern = r'(.)\1{20,}'
# 用字符串乘法生成10次重复的替换值
result = re.sub(pattern, r'\1' * 10, string1)
print(result)
# 输出:'adfajlkjl a sd========== READFadfa'

方法2:使用回调函数(更灵活)

如果后续需要调整重复次数(比如改成8次或15次),用回调函数可以把次数做成变量,维护更方便:

import re
string1 = 'adfajlkjl a sd=============================================== READFadfa'

def handle_repeated(match_obj):
    # 获取捕获的单个字符
    target_char = match_obj.group(1)
    # 返回该字符重复10次的结果(次数可改成变量)
    repeat_count = 10
    return target_char * repeat_count

pattern = r'(.)\1{20,}'
result = re.sub(pattern, handle_repeated, string1)
print(result)

正则说明

(.)\1{20,}的作用:

  • (.):匹配任意单个字符,并将其捕获为第1个分组
  • \1{20,}:匹配该字符连续重复20次及以上的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:25:39