3

我正在尝试查找重复 3 次或更多次的字符,例如我想采用以下字符串:

( 'aaa', 'buuuuut', 'oddddddddd')

并用一个字母替换所有出现的三个或更多字母:

( 'a', 'but', 'od')。

我试过以下代码

s=re.sub(r'(\w)\3*',r'(\w)',s)

但它会导致编译错误。

我需要使用什么正则表达式?

4

3 回答 3

7

看这个:

>>> mystr = 'buuuuuttttt'
>>> re.sub(r'(.)\1{2,}', r'\1', mystr)
'but'
>>> mystr = 'buttt'
>>> re.sub(r'(.)\1{2,}', r'\1', mystr)
'but'
>>>
于 2013-10-17T15:37:06.807 回答
3
>>> s = 'abbcccdddd'
>>> s = re.sub(r'(\w)\1(\1+)',r'\1',s)
>>> s
'abbcd'
于 2013-10-17T15:53:32.397 回答
2

也许尝试这样的事情:

s = re.sub(r'(\w)\1\1+', r'\1', s)
于 2013-10-17T15:54:38.427 回答