这是我尝试过的:

(.)(?=.*\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/

10-12 17:04