Grupos de captura en la cadena de reemplazo en Python
Al trabajar con el método sub, si
necesitas capturar algo en la expresión regular,
puedes insertar el contenido de ese grupo de captura
en la cadena de reemplazo escribiendo una barra invertida doble \
y el número del grupo. Por ejemplo, \1 -
primer grupo de captura, \2 - segundo grupo de captura
y así sucesivamente.
Para qué sirve esto y cómo usarlo vamos a verlo con ejemplos.
Ejemplo
Encontremos todos los números y en su lugar insertemos estos mismos números, pero entre paréntesis. Para ello, reemplazaremos todos los números encontrados por ellos mismos, pero entre paréntesis:
txt = '1 23 456 xax'
res = re.sub('(\d+)', '(\1)', txt)
print(res)
Como resultado, se guardará lo siguiente en la variable:
'(1) (23) (456) xax'
Ejemplo
Encontremos todas las cadenas que representen
números con 'x' alrededor y reemplacemos estos
números por ellos mismos, pero con signos '!'
alrededor:
txt = 'x1x x23x x456x xax'
res = re.sub('x(\d+)x', '!\1!', txt)
print(res)
Como resultado, se guardará lo siguiente en la variable:
'!1! !23! !456! xax'
Ejemplo
Resolvamos el siguiente problema: dada una cadena
'aaa@bbb ccc@ddd' - letras, luego
arroba, luego letras. Necesitamos intercambiar las posiciones de
las letras en la subcadena 'aaa@bbb' antes
de la '@' y después:
txt = 'aaa@bbb ccc@ddd'
res = re.sub('([a-z]+)@([a-z]+)', '\2@\1', txt)
print(res)
Como resultado, se guardará lo siguiente en la variable:
'bbb@aaa ccc@ddd'
Tareas prácticas
Dada la cadena:
txt = '12 34 56 78'
Intercambia los dígitos en todos los números de dos cifras.
Dada la cadena con una fecha:
txt = '31.12.2025'
Convierte esta fecha a '2025.12.31'.