这是我尝试过的:
(.)(?=.*\1)
这将删除所有重复的实例,只留下最后一个实例,即。
telnet -> lnet
我想要这个结果:
telnet -> teln
我该怎么做呢?我试着向后看,但据我所知,这只接受固定长度。
需要为此找到一个正则表达式。我知道无需正则表达式即可实现此目的的其他方法
最佳答案
纯正则表达式解决方案是不可能的。不过,您可以尝试使用回调函数。
z=[]
def fun(matchobj):
if matchobj.group(1) in z or matchobj.group(2) in z:
return ''
else:
if matchobj.group(1):
z.append(matchobj.group(1))
else:
z.append(matchobj.group(2))
return z[-1]
x="telnet"
print re.sub(r"(.)(?=.*\1)|(.)", fun, x)
关于python - 使用python使用正则表达式删除字符的重复实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41072143/