python - Python re.sub() 不会替换每个匹配项
问题描述
我正在使用 Python 3,我有两个字符串:abbcabb
和abca
. 我想删除单个字符的每两次出现。例如:
abbcabb
应该给予c
并且abca
应该给予bc
。
我尝试了以下正则表达式(此处):
(.)(.*?)\1
但是,它为第一个字符串提供了错误的输出。另外,当我尝试另一个(这里)时:
(.)(.*?)*?\1
但是,这又给出了错误的输出。这里出了什么问题?
python代码是一个打印语句:
print(re.sub(r'(.)(.*?)\1', '\g<2>', s)) # s is the string
解决方案
不用正则表达式也可以解决,如下
>>>''.join([i for i in s1 if s1.count(i) == 1])
'bc'
>>>''.join([i for i in s if s.count(i) == 1])
'c'
推荐阅读
- javascript - 在 Chrome 扩展程序中,当调用传递给 chrome.tabs.remove() 的回调时,为什么关闭的选项卡仍然存在?
- image - 使用 Python 更改一批图像的时间
- python - 使用 Selenium 和 Python 根据站点名称拉取特定搜索结果列表
- ruby-on-rails - Rails API has_many 关系未在 JSON 中显示
- python - 线程引发异常时的 GIL 死锁
- python - 尝试滚动 CT 切片
- pandas - 如何将mysql查询转换为数据框
- python - 如何使用 Python3 从网页中将所有 MP3 URL 下载为 MP3?
- java - NiFi ExecuteScript 输出使用 zip4j 损坏
- javascript - 如何在范围滑块的幻灯片上将文本放入本地存储?