使用正则表达式在Python中替换整数值
好吧,
我正在尝试在 XML 文件上应用一些正则表达式(搜索/替换)。是的,我需要使用一些库,但在这种情况下我不能。我的问题是,正如你可能猜到的那样,我想用一个整数替换节点的值。当我尝试这样做时,它给我报了分组错误。以下是我的模式:
搜索模式:
(<fieldset>)([^>].+)(<ipadd>)([^>].+)(<value>)([^>].+)(</value>)([^>].+)(</ipadd>)([^>].+)(</fieldset>)
替换模式:
\1\2\3\4\5123.123.123.123\7\8\9\10\11
如你所见,替换模式中的第五组变成了 "\5123"。当然,这样是行不通的。
如果我使用这样的方式:
\1\2\3\4\5 123.123.123.123\7\8\9\10\11
那就可以了。但我不想在这里加个空格或其他东西。
而且它在处理字符串时也可以工作:
\1\2\3\4\5foofoofoo\7\8\9\10\11
啊,我正在使用 re.sub() 来进行替换。
有没有办法让我在不加空格的情况下使用它呢?
谢谢大家
1 个回答
2
来自 Python 正则表达式操作 - re.sub(pattern, repl, string[, count, flags])
除了上面提到的字符转义和反向引用之外,
\g<name>
可以用来匹配一个叫做 name 的组所匹配的子字符串,这个组是通过(?P<name>...)
这种语法定义的。\g<number>
则是用对应的组号;比如\g<2>
就等于\2
,但在替换时不会产生歧义,比如\g<2>0
。这里的\20
会被理解为引用第20组,而不是引用第2组后面跟着字符 '0'。反向引用\g<0>
会替换为正则表达式匹配到的整个子字符串。