如何替换重复的字符模式

时间:2014-08-28 01:37:08

标签: python regex

我有一个字符串,其中包含重复3次的随机字符对,对于ex "abababwhatevercdcdcd",我想删除这些对以获取字符串的其余部分,如前"whatever"例如,我该怎么做?

我尝试了以下内容:

import re
re.sub(r'([a-z0-9]{2}){3}', r'', string)

但它不起作用

2 个答案:

答案 0 :(得分:4)

这里需要反向引用才能重复实际进行的匹配,而不是尝试使用相同的模式进行新的匹配:

([a-z0-9]{2})\1\1

>>> import re
>>> re.sub(r'([a-z0-9]{2})\1\1', r'', "abababwhatevercdcdcd")
'whatever'
>>> re.sub(r'([a-z0-9]{2})\1\1', r'', "wabababhatevercdcdcd")
'whatever'

答案 1 :(得分:1)

对于多个角色,您可以使用:

(.{2,})\1+