我有一个正则表达式
(obligor_id): (\d+);(obligor_id): (\d+):
匹配示例如下:
Match 1
Full match 57-95 `obligor_id: 505732;obligor_id: 505732:`
Group 1. 57-67 `obligor_id`
Group 2. 69-75 `505732`
Group 3. 76-86 `obligor_id`
Group 4. 88-94 `505732`
我正在尝试将完整匹配部分替换为以下内容:
obligor_id: 505732;obligor_id: 505732:
-> obligor_id: 505732;
两种实现方法,
用空字符串替换组3和4
用空字符串替换组1和2,然后将组4替换为(\d+);
如何在python中实现这两个?我知道有一个re.sub函数,但是我只知道如何替换整个而不是部分替换组。
谢谢。
答案 0 :(得分:2)
您可以更改捕获组并在替换字符串中引用它们:
s = 'obligor_id: 505732;obligor_id: 505732:'
re.sub(r'(obligor_id: \d+;)(obligor_id: \d+:)', r'\1', s)
# => 'obligor_id: 505732;
答案 1 :(得分:1)
感谢您的回答和建议:
我为将来的用户实现了以下目标:
re.sub(regex, r'\1: \2;', str)
re.sub(regex, r'\3: \4;', str)