python无效组引用\ 10 \ 2

时间:2014-01-13 12:26:14

标签: python regex

如果我要插入" 0"那么语法是什么?在第一组参考后?

import re
re.sub("(..)(..)", "\\1x\\2", "toto")
toxto
re.sub("(..)(..)", "\\10\\2", "toto")
sre_constants.error: invalid group reference

错误,因为\ 10被解释为第10个参考组(这是为什么在ed()中,组引用在[1-9]区间内)。

在上面的例子中,如何获得" to0to" ?

1 个答案:

答案 0 :(得分:9)

您可以使用基于\g的群组替换:

>>> import re
>>> re.sub("(..)(..)", r"\g<1>0\g<2>", "toto")
'to0to'

来自docs

  

\g<number>使用相应的组号;因此\g<2>   等同于\2,但在\g<2>0等替换中不含糊。   \20将被解释为对组20的引用,而不是对引用的引用   将2分组后跟文字字符'0'