grupo re.sub de Python: número después de \número

Resuelto zhigang asked hace 13 años • 1 respuestas

¿Cómo puedo reemplazar foobarcon foo123bar?

Esto no funciona:

>>> re.sub(r'(foo)', r'\1123', 'foobar')
'J3bar'

Esto funciona:

>>> re.sub(r'(foo)', r'\1hi', 'foobar')
'foohibar'
zhigang avatar May 13 '11 04:05 zhigang
Aceptado

La respuesta es:

re.sub(r'(foo)', r'\g<1>123', 'foobar')

Extracto relevante de los documentos :

Además de los escapes de caracteres y las referencias inversas como se describe anteriormente, \g<name>se utilizará la subcadena que coincida con el grupo denominado name, según lo definido por la (?P<name>...)sintaxis. \g<number>utiliza el número de grupo correspondiente; \g<2>por lo tanto es equivalente a \2, pero no es ambiguo en un reemplazo como \g<2>0. \20se interpretaría como una referencia al grupo 20, no como una referencia al grupo 2 seguida del carácter literal '0'. La referencia inversa \g<0>sustituye en toda la subcadena que coincide con el RE.

John Gaines Jr. avatar May 12 '2011 21:05 John Gaines Jr.