我有一个字符串s
,其中:
s = 'id=,value=<<<,RMOrigin=[0]>>>BasicData:id=ABCvalue=<<<ABCRMGrade=[0]>>>BasicData:id=ABCvalue='
我想在任何时候用 DEF 替换 ABC
<<<ABC\w+=\[0]>>>
发生然后输出应该是
<<<DEF\w+=\[0]>>>
在文本中 \w+ 指的是 RMGrade 但这会随机改变
所需的输出是:
S = id=,value=<<<,RMOrigin=[0]>>>BasicData:id=ABCvalue=<<<ABCRMGrade=[0]>>>BasicData:id=ABCvalue=
我尝试过:
s = re.sub('<<<ABC\w+=\[0]>>>','<<<DEF\w+=\[0]>>>',s)
我输出为
'id=,value=<<<,RMOrigin=[0]>>>BasicData:id=ABCvalue=<<<DEF\\w+=\\[0]>>>BasicData:id=ABCvalue='
我有点困惑你到底想要实现什么。但是,如果您想ABC
在每次匹配 pattern 时进行替换<<<ABC\w+=\[0]>>>
,则可以使用对组的反向引用。
例如,修改模式以便您可以引用组(<<<)ABC(\w+=\[0]>>>)
。现在 group#1 指的是之前的部分ABC
, group#2 指的是之后的部分ABC
。所以替换字符串看起来像这样 - \1DEF\2
- \1
group#1 和\2
group#2在哪里。
import re
s = 'id=,value=<<<,RMOrigin=[0]>>>BasicData:id=ABCvalue=<<<ABCRMGrade=[0]>>>BasicData:id=ABCvalue='
res = re.sub(r'(<<<)ABC(\w+=\[0]>>>)', r'\1DEF\2', s)
print(res)
输出: id=,value=<<<,RMOrigin=[0]>>>BasicData:id=ABCvalue=<<<DEFRMGrade=[0]>>>BasicData:id=ABCvalue=
您还可以使用函数来定义替换。更多信息请查看文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句