如何替换重复字符模式

1 投票
2 回答
988 浏览
提问于 2025-04-18 18:47

我有一个字符串,里面有一些随机字符的对,它们重复了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'

撰写回答