2011-02-16 66 views
2

那么, 我想在xml上应用一些正则表达式(搜索/替换)。是的,我必须使用一些lib,但在这种情况下,我不能。正如你可能知道的,我的问题是用一个整数替换节点的值。当我尝试,它给我的分组error.Here是我的模式:用python替换正则表达式的整数值

搜索模式:

(<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()更换。

有没有一种方法可以在没有空格的情况下使用它?

谢谢大家

回答

2

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

除了字符转义和 反向引用,如上所述, \g<name>将使用由指定的组的名称相匹配的子串 ,如 由(?P<name>...)定义句法。 \g<number>使用相应的 组号码;因此\g<2>因此是 相当于\2,但不是含糊不清的 的替代品,如\g<2>0\20 将被解释为参考组 组20,而不是参考组2 ,后面跟着字面字符'0'。 反向引用\g<0>替代 整个子字符串由 RE匹配。

+0

非常感谢 – savruk 2011-02-16 09:41:52