re.sub匹配替换

时间:2017-11-30 10:04:37

标签: python regex

我正在尝试使用Python和re.sub来替换之前匹配的字符串。基本例子:

由此:

Cat_A
 SomeStuff
Cat_B
 SomeStuff
Cat_C
 SomeStuff

对此:

Cat_A
 Cat_A
Cat_B
 Cat_A
Cat_C
 Cat_A

但是当我尝试使用re.sub时,我遇到了某种操作数错误。

谢谢!

编辑:

好的,所以我的问题确实不准确,所以这里有一个基于我真正要实现的目标的例子。 我有这样的输出:

6500_1#show ip arp vrf A

Protocol  Address          Age (min)
Internet  1.1.1.1                 - 
Internet  1.1.1.2                 0 
Internet  1.1.1.3                 0 
Internet  1.1.1.4             - 

6500_1#show ip arp vrf B    
Protocol  Address          Age (min)
Internet  2.2.2.1                 0 
Internet  2.2.2.2                  - 

我想用之前的vrf名称替换“Internet”字,得到类似的内容:

6500_1#show ip arp vrf A
Protocol  Address          Age (min)    
vrf A  1.1.1.1                -     
vrf A  1.1.1.2                0     
vrf A  1.1.1.3                0     
vrf A  1.1.1.4                -     
6500_1#show ip arp vrf B    
Protocol  Address          Age (min)    
vrf B  2.2.2.1                0     
vrf B  2.2.2.2                 - 

我想为此使用re.sub,但是我无法为替换部件推出正则表达式。

1 个答案:

答案 0 :(得分:1)

假设您在问题文本中输入了拼写错误,并根据您的问题标题回答,这将起作用:

import re

s = '''Cat_A
 SomeStuff
Cat_B
 SomeStuff
Cat_C
 SomeStuff'''

s = re.sub(r'(Cat_\w)\s*(\w*)', r'\1\n \1', s)
print(s)