online - python re.sub group: number after / number
regular expression python creator (1)
¿Cómo puedo reemplazar ''foobar'' a ''foo123bar''?
Esto no funciona:
>>> re.sub(r''(foo)'', r''/1123'', ''foobar'')
''J3bar''
Esto funciona:
>>> re.sub(r''(foo)'', r''/1hi'', ''foobar'')
''foohibar''
Creo que es un problema común: número después de / number. ¿Alguien puede darme un punto sobre cómo manejar esto?
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 posteriores, tal como se describió anteriormente, / g usará la subcadena que coincida con el nombre del grupo, como se define en la sintaxis (? P ...). / g usa el número de grupo correspondiente; / g <2> es por lo tanto equivalente a / 2, pero no es ambiguo en un reemplazo como / g <2> 0. / 20 se interpretaría como una referencia al grupo 20, no como una referencia al grupo 2 seguido del carácter literal ''0''. La referencia posterior / g <0> sustituye en toda la subcadena emparejada por el RE.