首页 > 解决方案 > Reg sub 重复字符不按顺序

问题描述

我想得到这样的东西:

输入:'abcad121'

输出:'abcd12'

我尝试使用正则表达式模式r'(.)(?=.*\1)',但这不是我需要的。

标签: regex

解决方案


您可以使用 PyPi 正则表达式模块来执行此操作,您可以使用该模块进行安装pip install regex,然后使用:

import regex
print( regex.sub(r'(.)(?<=\1.*\1)', '', 'abcad121') )

请参阅Python 演示。参见正则表达式演示。这里的重点是先捕获一个char,然后在char的左边检查是否有这样的char一些0或多个char。

如果要使用re,则需要先反转字符串,运行当前的正则表达式,然后反转生成的字符串:

import re
text = 'abcad121'
print( re.sub(r'(.)(?=.*\1)', '', text[::-1])[::-1] )

请参阅此 Python 演示


推荐阅读