正则表达式将任何字符的多次出现限制为两个

时间:2015-10-07 07:13:48

标签: python regex

我正在寻找一个正则表达式来将字符串中任何字符的多次出现限制为两个。

例如:Reallllly likeSooooooo good应转换为Really likeSo good

3 个答案:

答案 0 :(得分:3)

将三个或更多相同字符的序列替换为两个。

re.sub(r'(.)\1{2,}', r'\1\1', "Realllllly goooood")

编辑:修正了拼写错误。

答案 1 :(得分:0)

我不知道如何使用正则表达式执行此操作,但itertools.groupby效果很好:

>>> from itertools import groupby
>>> g = groupby('reallllly goood')
>>> ''.join(''.join(list(x)[:2]) for _,x in g) 
>>> 'really good'

答案 2 :(得分:0)

来自@pacholik的答案几乎是正确的。

正确表达:

re.sub(r'(.)\1{2,}', r'\1\1', "Realllllly goood")

我们替换多出3次出现的子字符串,而不是4次(第一次(.)和2次或更多次重复\1{2,}替换为第一个字符\1\1 )。