python - Python RegEx:如何单独替换每个匹配项
问题描述
我有一个字符串s
、一个模式p
和一个替换r
,我需要获取其中只有一个匹配项p
被替换为的字符串列表r
。
例子:
s = 'AbcAbAcc'
p = 'A'
r = '_'
// Output:
['_bcAbAcc', 'Abc_bAcc', 'AbcAb_cc']
我试过了,re.finditer(p, s)
但我不知道如何用r
.
解决方案
找到所有匹配项后,您可以手动替换它们:
[s[:m.start()] + r + s[m.end():] for m in re.finditer(p,s)]
结果是:
['_bcAbAcc', 'Abc_bAcc', 'AbcAb_cc']
它是如何工作的?
re.finditer(p,s)
将找到所有匹配项(每个都将是一个re.Match
对象)re.Match
对象具有start()
返回end()
匹配位置的方法- 您可以使用以下代码替换开始和结束之间的字符串部分:
s[:begin] + replacement + s[end:]
推荐阅读
- php - 如何重复数组一定次数
- elasticsearch - 当 _source.enabled=false 时无法在结果中看到指定的字段
- .net - 让 .NET Framework 项目引用 .NET Standard 程序集需要什么?
- python - 如何使用 pandas iterrows() 获取当前迭代的计数?
- python - 如何从熊猫数据框中的多列中删除字符?
- ruby-on-rails - Twillio 允许听众在会议期间按 * 要求发言
- php - 如何在不破坏的情况下取消设置会话?
- php - 如何修复PHP中文件不上传的问题(上传,但不移动,导致删除)
- go - Fabric SDK 无法初始化加密套件配置
- c++ - 声明原型时如何在主代码块中调用函数