如何在python中使用regex.sub替换符号

时间:2019-01-29 11:20:38

标签: python regex

我有一个字符串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='

1 个答案:

答案 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