python替换捕获组值

时间:2018-10-10 15:07:07

标签: python regex regex-group

我正在尝试使用python代码在以下代码段中将字符值“ K”替换为“ M”,但运气不佳。

代码:

import re

original_text = 'context PQ-4662-33-K64C-C-DDxxx-Sxxxx'
regex = re.compile(r'context\s.*\d[0-9]\-\w\w\-(K).*')
result = re.match(regex, original_text)
replace_attempt = regex.sub(r'M\1', original_text)

print(result.group(0))
print(result.group(1))
print(replace_attempt)

输出:

context PQ-4662-33-K64C-C-DDxxx-Sxxxx
K
MK

Process finished with exit code 0

我想要的期望输出:

context PQ-4662-33-M64C-C-DDxxx-Sxxxx

2 个答案:

答案 0 :(得分:1)

替换为必需的组

original_text = 'context PQ-4662-33-K64C-C-DDxxx-Sxxxx'
original_text=re.sub(r'(context\s.*\d[0-9]\-\w\w\-)(K)(.*)',r'\1'+'M'+r'\3',original_text)
print(original_text) #'context PQ-4662-33-M64C-C-DDxxx-Sxxxx'

如果您只是想将所有`K替换为M

re.sub('K','M',original_text)

答案 1 :(得分:0)

如果您要做的只是将K替换为M,则只需执行以下任一操作即可:

1)re.sub('K', 'M', original_text)

2)original_text.replace('K', 'M')

两者都会产生:

context PQ-4662-33-M64C-C-DDxxx-Sxxxx

如果您的要求更加具体,并且输入字符串始终遵循规定的模式:

re.sub(r'(?<=context [A-Z]{2}-\d{4}-\d{2}-)[A-Z]', 'M', original_text)

再次获得收益:

context PQ-4662-33-M64C-C-DDxxx-Sxxxx