What are the parameters of Python resub() method?

Guía Completa de re.sub() en Python

03/08/2025

Valoración: 4.13 (4344 votos)

En el vasto universo de la programación en Python, la manipulación de cadenas de texto es una tarea cotidiana. Ya sea para limpiar datos, transformar formatos o simplemente buscar y reemplazar, contar con las herramientas adecuadas es fundamental. Aquí es donde el módulo re de Python, dedicado a las expresiones regulares, brilla con luz propia, y dentro de él, la función re.sub() se erige como una de las más poderosas y versátiles.

What is a regex sub() function in Python?
Summary: in this tutorial, you’ll learn about the Python regex sub() function that returns a string after replacing the matched pattern in a string with a replacement. The sub() is a function in the built-in re module that handles regular expressions. The sub() function has the following syntax: In this syntax:

La función re.sub() nos permite buscar partes de una cadena que coincidan con un patrón de expresión regular y sustituirlas por un nuevo subtexto. A diferencia del método .replace() de las cadenas, que se limita a reemplazos literales, re.sub() abre un abanico de posibilidades para realizar modificaciones complejas y dinámicas, convirtiéndose en una herramienta indispensable para cualquier desarrollador que trabaje con procesamiento de texto.

Índice de Contenido

Entendiendo la Sintaxis de re.sub()

Antes de sumergirnos en los ejemplos prácticos, es crucial comprender la estructura de esta función. La sintaxis es clara y está diseñada para ser flexible, adaptándose a diversas necesidades.

re.sub(pattern, repl, string, count=0, flags=0)

Analicemos cada uno de sus parámetros para entender su función y cómo podemos aprovecharlos al máximo.

Parámetros Detallados

Para facilitar la comprensión, hemos desglosado cada parámetro en la siguiente tabla:

ParámetroDescripción
patternEl patrón de expresión regular que queremos encontrar en la cadena. Puede ser una cadena de texto o un objeto de patrón compilado.
replEl texto de reemplazo. Este es el valor con el que se sustituirán todas las coincidencias encontradas. Puede ser una cadena de texto o, como veremos más adelante, una función.
stringLa cadena de texto original sobre la cual se realizará la búsqueda y el reemplazo.
count (opcional)Un entero que especifica el número máximo de reemplazos a realizar. Por defecto, su valor es 0, lo que significa que se reemplazarán todas las ocurrencias del patrón.
flags (opcional)Permite modificar el comportamiento de la coincidencia. Por ejemplo, re.IGNORECASE para que la búsqueda no distinga entre mayúsculas y minúsculas.

El valor de retorno de re.sub() es siempre una nueva cadena de texto con las sustituciones realizadas. Si no se encuentra ninguna coincidencia, la función devuelve la cadena original sin ninguna modificación.

Ejemplos Prácticos: De lo Básico a lo Avanzado

La mejor manera de aprender es viendo la herramienta en acción. Comencemos con un ejemplo simple y aumentemos gradualmente la complejidad.

Reemplazo Básico

Imaginemos que tenemos una cadena con nombres de frutas y queremos cambiar una por otra.

What is re sub in Python?
re.sub () method in Python parts of a string that match a given regular expression pattern with a new substring. This method provides a powerful way to modify strings by replacing specific patterns, which is useful in many real-life tasks like text processing or data cleaning. pattern: The regular expression pattern we want to match.
import re texto_frutas = "apple orange apple banana" patron = "apple" reemplazo = "grape" # Reemplazar todas las ocurrencias de "apple" por "grape" resultado = re.sub(patron, reemplazo, texto_frutas) print(resultado)

La salida de este código será:

grape orange grape banana

Como se puede observar, todas las instancias de "apple" han sido sustituidas por "grape".

Limpiando Datos: Eliminando Caracteres no Deseados

Un caso de uso muy común es la limpieza de datos, por ejemplo, para obtener solo los números de un número de teléfono formateado.

import re telefono_formateado = "(212)-456-7890" # El patrón \D coincide con cualquier carácter que NO sea un dígito patron_no_digito = r"\D" # Reemplazamos todos los no dígitos con una cadena vacía telefono_limpio = re.sub(patron_no_digito, "", telefono_formateado) print(telefono_limpio)

La salida será:

2124567890

Aquí, el patrón r"\D" es clave. La 'r' inicial indica que es una "raw string" (cadena cruda), lo que evita que las barras invertidas sean interpretadas como secuencias de escape de Python. \D es una secuencia especial de regex que significa "cualquier carácter que no sea un dígito".

El Poder de los Grupos de Captura

Aquí es donde re.sub() realmente demuestra su superioridad. Los grupos de captura, definidos con paréntesis () en el patrón, nos permiten "memorizar" partes de la coincidencia para luego reutilizarlas en la cadena de reemplazo. Estas partes memorizadas se referencian usando \1, \2, etc.

Reordenando Nombres y Edades

Supongamos que tenemos una lista de personas con sus edades y queremos invertir el formato de "Nombre Edad" a "Edad años, Nombre".

import re texto_personas = "John 25, Jane 30, Jack 22" # Grupo 1 (\w+): una o más letras (el nombre) # Grupo 2 (\d+): uno o más dígitos (la edad) patron = r"(\w+) (\d+)" # En el reemplazo, \2 se refiere al segundo grupo (edad) # y \1 se refiere al primer grupo (nombre) reemplazo = r"\2 years old, \1" resultado = re.sub(patron, reemplazo, texto_personas) print(resultado)

La salida es mágica:

25 years old, John, 30 years old, Jane, 22 years old, Jack

El motor de regex identificó cada par "Nombre Edad", capturó el nombre en el grupo 1 y la edad en el grupo 2, y luego los reensambló en el nuevo formato especificado en la cadena de reemplazo.

Transformando Formatos de Fecha

De manera similar, podemos cambiar un formato de fecha de AAAA-MM-DD a DD/MM/AAAA.

What is re sub in Python?
re.sub () method in Python parts of a string that match a given regular expression pattern with a new substring. This method provides a powerful way to modify strings by replacing specific patterns, which is useful in many real-life tasks like text processing or data cleaning. pattern: The regular expression pattern we want to match.
import re fecha_iso = "Date: 2022-01-01" # Capturamos año, mes y día en tres grupos distintos patron_fecha = r"(\d+)-(\d+)-(\d+)" reemplazo_fecha = r"\3/\2/\1" fecha_transformada = re.sub(patron_fecha, reemplazo_fecha, fecha_iso) print(fecha_transformada)

Salida:

Date: 01/01/2022

Controlando el Flujo: El Parámetro `count`

A veces, no queremos reemplazar todas las coincidencias, sino solo la primera o las primeras 'n'. Para esto, usamos el parámetro count.

import re texto_frutas = "apple orange apple banana" patron = "apple" reemplazo = "grape" # Reemplazar solo la primera ocurrencia de "apple" resultado_limitado = re.sub(patron, reemplazo, texto_frutas, count=1) print(resultado_limitado)

El resultado muestra que solo la primera "apple" fue modificada:

grape orange apple banana

Reemplazos Dinámicos: Usando una Función

Una de las características más avanzadas y potentes de re.sub() es la capacidad de pasar una función como argumento de reemplazo (repl). Cuando se hace esto, la función se invoca para cada coincidencia encontrada, y el valor que retorne será utilizado como el texto de reemplazo.

La función de reemplazo recibe un único argumento: un objeto de coincidencia (match object), que contiene toda la información sobre lo que se ha encontrado.

Elevando Números al Cuadrado

Imaginemos que queremos encontrar todos los números en una cadena y reemplazarlos por su valor al cuadrado.

import re def elevar_al_cuadrado(match): # match.group(0) contiene toda la cadena que coincidió con el patrón numero = int(match.group(0)) return str(numero ** 2) texto_numeros = "Los números son: 2, 5, 10 y 12" patron_numeros = r"\d+" resultado_cuadrado = re.sub(patron_numeros, elevar_al_cuadrado, texto_numeros) print(resultado_cuadrado)

La salida será:

Los números son: 4, 25, 100 y 144

Este enfoque abre la puerta a transformaciones de datos extremadamente complejas, donde el reemplazo depende del valor que se ha encontrado, permitiendo realizar cálculos, consultas a bases de datos o cualquier otra lógica que necesitemos.

Preguntas Frecuentes (FAQ)

¿Qué diferencia hay entre `re.sub()` y el método `string.replace()`?
La principal diferencia es que string.replace() solo puede buscar y reemplazar cadenas de texto literales. En cambio, re.sub() utiliza el poder de las expresiones regulares, lo que le permite buscar patrones complejos, como "cualquier número", "una palabra que empiece por A" o "un formato de correo electrónico".
¿Qué ocurre si el patrón de `re.sub()` no encuentra ninguna coincidencia?
Si no se encuentra ninguna coincidencia en la cadena de texto, re.sub() simplemente devuelve la cadena original sin realizar ninguna modificación. No genera ningún error.
¿Por qué se usa `r"..."` para los patrones?
Se conoce como "raw string" o cadena cruda. En Python, la barra invertida `\` se usa para secuencias de escape (como `\n` para una nueva línea). Las expresiones regulares también usan la barra invertida para sus propias secuencias especiales (como `\d` para un dígito). Usar `r"..."` le dice a Python que no interprete las barras invertidas, pasándoselas directamente al motor de expresiones regulares y evitando así conflictos y errores.
¿Puedo usar banderas como `re.IGNORECASE`?
Sí. Puedes pasar una o más banderas en el parámetro `flags`. Por ejemplo, `re.sub("apple", "grape", texto, flags=re.IGNORECASE)` reemplazaría "apple", "Apple", "APPLE", etc.

Conclusión

La función re.sub() es mucho más que un simple "buscar y reemplazar". Es una navaja suiza para la manipulación de texto en Python. Desde tareas sencillas de sustitución hasta transformaciones complejas basadas en patrones y lógica personalizada, dominar esta función te permitirá limpiar, normalizar y procesar datos de texto de manera eficiente y elegante. La próxima vez que te enfrentes a un problema de manipulación de cadenas, recuerda el poder que las expresiones regulares y re.sub() ponen a tu disposición.

Si quieres conocer otros artículos parecidos a Guía Completa de re.sub() en Python puedes visitar la categoría Juegos.

Subir