如何删除重复的连续字符并使用正则表达式保留第一个字符?

时间:2017-01-14 14:03:00

标签: python regex string

我发现了一个代码片段,用于删除重复的连续字符,并通过网络中的regex保留Python中的第一个字符,如下所示:

import re
re.sub(r'(?s)(.)(?=.*\1)','','aabbcc')  #'abc'

但是如果字符串是'aabbccaabb'那就有一个缺点。它会忽略第一个' aa' bb'然后转出“#cab;”。

re.sub(r'(?s)(.)(?=.*\1)','','aabbccaabb')  #'cab'

有没有办法通过正则表达式来解决它?

2 个答案:

答案 0 :(得分:4)

如果没有正则表达式,请检查前一个字符是否与当前字符相同,使用带有条件的列表推导并加入结果:

Drop

答案 1 :(得分:2)

只需删除正向前方的.*

import re

print re.sub(r'(?s)(.)(?=\1)','','aabbcc')
print re.sub(r'(?s)(.)(?=\1)','','aabbccaabb')

输出:

abc
abcab