使用python通过正则表达式替换整数值

时间:2011-02-16 09:09:01

标签: python regex

那么, 我试图在xml上应用一些正则表达式(搜索/替换)。是的我必须使用一些lib。但是在那种情况下我不能。我的问题是,正如您可能想到的那样,用整数替换node的值。当我尝试这个时,它会给我分组错误。这是我的模式:

搜索模式:

(<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 个答案:

答案 0 :(得分:2)

来自Python Regular Expression operations - re.sub(pattern, repl, string[, count, flags])

  

除了角色逃脱和   如上所述的反向引用,   \g<name>将使用子字符串   由名为name的组匹配,as   由(?P<name>...)语法定义。   \g<number>使用相应的   组号;因此\g<2>   相当于\2,但不含糊   在诸如\g<2>0之类的替代品中。 \20   将被解释为对...的引用   第20组,而不是对第2组的引用   后跟字面字符'0'。   反向引用\g<0>替代了   整个子串匹配   RE