Python正则表达式:移除连续出现超过N次的重复字母
正则实现连续重复字符保留指定次数的替换
要将字符串中连续重复的字符最多保留N次(比如N=2时把"Sayy Hellooooooo"转为"Sayy Helloo"),可以通过正则替换实现:
核心思路
匹配连续出现N次及以上的相同字符,将其替换为该字符重复N次的结果。
正则表达式与替换逻辑
当N=2时,正则表达式为:(.)\1{2,}
替换字符串为:\1\1
(.):捕获任意单个字符(若需匹配换行,替换为([\s\S]))\1{2,}:表示捕获的字符连续出现2次及以上(加上前面的捕获组,整体是连续3次及以上的重复字符)- 替换时用捕获到的字符重复2次,截断过长的连续序列
示例代码
Python
import re original = "Sayy Hellooooooo" n = 2 pattern = r'(.)\1{' + str(n) + ',}' result = re.sub(pattern, r'\1' * n, original) print(result) # 输出: Sayy Helloo
JavaScript
const original = "Sayy Hellooooooo"; const n = 2; const regex = new RegExp(`(.)\\1{${n},}`, 'g'); const result = original.replace(regex, '$1'.repeat(n)); console.log(result); // 输出: Sayy Helloo
如果需要处理所有连续重复(包括刚好N次的,虽然结果不变),可以把正则改成(.)\1+,替换逻辑一致,只是匹配范围更广,但最终结果相同。
内容的提问来源于stack exchange,提问作者Anas Saradar
相关产品推荐
相关产品推荐

