Python 如何使用正则表达式从字符串中删除字符副本?

Python 如何使用正则表达式从字符串中删除字符副本?,python,regex,regex-group,Python,Regex,Regex Group,在本例中,我想删除“I”的副本,尝试使用组,但不起作用。我哪里做错了 import re a = '123iiii' b = re.match('.*i(i+)', a) print(b.group(1)) >>> i a = re.sub(b.group(1), '', a) print(a) >>> 123 期望的结果是“123i”。 感谢您的回答。您只需使用sub功能将i的序列替换为单个i import re a = '123iiii' a = r

在本例中,我想删除“I”的副本,尝试使用组,但不起作用。我哪里做错了

import re

a = '123iiii'
b = re.match('.*i(i+)', a)
print(b.group(1))
>>> i
a = re.sub(b.group(1), '', a)
print(a)
>>> 123
期望的结果是“123i”。

感谢您的回答。

您只需使用
sub
功能将
i的序列
替换为单个
i

import re

a = '123iiii'
a = re.sub(r'i+', 'i', a)
print(a)

看来你需要的是:

重新导入
a='123iiii'
a=re.sub(r“i+”,“i”,a)
印刷品(a)
>>>123i
也许

([^i]*i)i*([^\r\n]*)
以及替代,

\1\2
也许可以调查一下

试验 输出
如果您希望简化/修改/探索表达式,将在的右上面板中进行解释。如果您愿意,还可以在中查看它与一些示例输入的匹配情况


正则表达式电路 可视化正则表达式:


即使字符串中的多个位置有i,以下内容也可以使用

重新导入
s='123II657III'
re.sub('i+','i',s)
输出

'123i675i'

你想留下一个吗?
123i
123iabc
123i
'123i675i'