我需要解析一个如下所示的配置文件(简化):
<config>
<links>
<link name="Link1" id="1">
<encapsulation>
<mode>ipsec</mode>
</encapsulation>
</link>
<link name="Link2" id="2">
<encapsulation>
<mode>udp</mode>
</encapsulation>
</link>
</links>
我的目标是能够更改特定于特定链接的参数,但我无法让替换正常工作。我有一个正则表达式可以隔离特定链接上的参数值,其中该值包含在捕获组 1 中:
link_id = r'id="1"'
parameter = 'mode'
link_regex = '<link [\w\W]+ %s>[\w\W]*[\w\W]*<%s>([\w\W]*)</%s>[\w\W]*</link>' \
% (link_id, parameter, parameter)
因此,
print re.search(final_regex, f_read).group(1)
打印 ipsec
regex howto中的示例似乎都假设一个人想在替换中使用捕获组,但我需要做的是替换捕获组本身(例如将 Link1 模式从 ipsec 更改为 udp)。