首页 > 解决方案 > Python re.sub() 不会替换每个匹配项

问题描述

我正在使用 Python 3,我有两个字符串:abbcabbabca. 我想删除单个字符的每两次出现。例如:

abbcabb应该给予c并且abca应该给予bc

我尝试了以下正则表达式(此处):

(.)(.*?)\1

但是,它为第一个字符串提供了错误的输出。另外,当我尝试另一个(这里)时:

(.)(.*?)*?\1

但是,这又给出了错误的输出。这里出了什么问题?


python代码是一个打印语句:

print(re.sub(r'(.)(.*?)\1', '\g<2>', s)) # s is the string

标签: pythonregexstringreplacecapturing-group

解决方案


不用正则表达式也可以解决,如下

>>>''.join([i for i in s1 if s1.count(i) == 1])
'bc'
>>>''.join([i for i in s if s.count(i) == 1])
'c'

推荐阅读