我有一个字符串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='
答案 0 :(得分:0)
我有点困惑您真正想要实现的目标。但是,如果要在模式ABC
的每个匹配项中替换<<<ABC\w+=\[0]>>>
,则可以对组使用反向引用。
例如,修改模式,以便您可以引用组(<<<)ABC(\w+=\[0]>>>)
。现在,组#1指ABC
之前的部分,组#2指ABC
之后的部分。因此替换字符串看起来像这样-\1DEF\2
-其中\1
是组#1,\2
是组#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=
您还可以使用函数来定义替换。有关更多信息,请登录documentation。