【发布时间】:2019-05-16 08:56:13
【问题描述】:
我使用的是 Python 3,我有两个字符串:abbcabb 和 abca。我想删除单个字符的每一次出现。例如:
abbcabb 应该给c,abca 应该给bc。
我尝试了以下正则表达式 (here):
(.)(.*?)\1
但是,它为第一个字符串提供了错误的输出。另外,当我尝试另一个时(here):
(.)(.*?)*?\1
但是,这个又给出了错误的输出。这里出了什么问题?
python代码是打印语句:
print(re.sub(r'(.)(.*?)\1', '\g<2>', s)) # s is the string
【问题讨论】:
-
解释你想要的结果背后的逻辑。你是说如果字符出现偶数次,那么你根本不想要它,如果有一个奇数,你想要在输出中正好一个?您真的关心输出顺序,还是只想知道哪些字符出现奇数次?
-
“每两次出现”是什么意思? “字符串中多次出现的所有字符”? “具有相同值的邻居的所有字符”?
-
@KarlKnechtel 你是对的。如果重复很奇怪,我只想要一个。而且,顺序是可选的。
-
所以我们很清楚:将两个输入放在一起,
abbcabbabca,应该给b(因为两个cs 取消),而不是cbc? -
@KarlKnechtel 是的,你是对的。
标签: python regex string replace capturing-group