如何替换重复字符模式
我有一个字符串,里面有一些随机字符的对,它们重复了3次,比如 "abababwhatevercdcdcd"
。我想把这些重复的字符对去掉,得到剩下的部分,比如在这个例子中就是 "whatever"
。我该怎么做呢?
我试过以下方法:
import re
re.sub(r'([a-z0-9]{2}){3}', r'', string)
但是没有成功。
2 个回答
1
如果你想处理多个字符,可以使用:
(.{2,})\1+
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'