Las expresiones regulares (regex o regexp) son herramientas poderosas para la coincidencia de patrones dentro de cadenas. El módulo re
de Python ofrece una funcionalidad robusta para operaciones regex, donde los comodines juegan un papel crucial. Este artículo explora cómo usar eficazmente los comodines con la función re.sub()
para varias tareas de manipulación de cadenas.
Tabla de contenido
- Sustituciones básicas de Regex con comodines
- Uso avanzado de comodines y cuantificadores
- Combinación de comodines para patrones complejos
- Ejemplos del mundo real: Extracción de correo electrónico y número de teléfono
- Conclusión
Sustituciones básicas de Regex con comodines
La función re.sub()
es fundamental para las sustituciones regex. Su sintaxis es re.sub(patrón, reemplazo, cadena, count=0, flags=0)
. El patrón
es una expresión regular, reemplazo
es la cadena de sustitución, cadena
es la entrada, count
limita las sustituciones y flags
modifica el comportamiento de coincidencia. Los comodines mejoran dramáticamente la flexibilidad del patrón
.
Reemplacemos todas las vocales en una cadena con «X»:
import re
texto = "Hola, Mundo!"
texto_reemplazado = re.sub(r"[aeiou]", "X", texto, flags=re.IGNORECASE)
print(f"Original: {texto}")
print(f"Reemplazado: {texto_reemplazado}")
[aeiou]
es un conjunto de caracteres comodín que coincide con cualquier vocal (sin distinción de mayúsculas y minúsculas debido a re.IGNORECASE
).
Uso avanzado de comodines y cuantificadores
re.sub()
admite comodines complejos. Reemplacemos secuencias de uno o más dígitos con «NÚMERO»:
import re
texto = "Mi número de teléfono es 123-456-7890 y mi código postal es 90210."
texto_reemplazado = re.sub(r"d+", "NÚMERO", texto)
print(f"Original: {texto}")
print(f"Reemplazado: {texto_reemplazado}")
d+
coincide con uno o más dígitos (d
coincide con un dígito, +
significa una o más repeticiones).
Aquí hay una tabla que resume los comodines clave:
Comodín | Descripción |
---|---|
. |
Coincide con cualquier carácter excepto el carácter de nueva línea. |
* |
Coincide con cero o más ocurrencias del elemento anterior. |
+ |
Coincide con una o más ocurrencias del elemento anterior. |
? |
Coincide con cero o una ocurrencia del elemento anterior. |
[] |
Define un conjunto de caracteres (por ejemplo, [abc] ). |
[^] |
Define un conjunto de caracteres negado (por ejemplo, [^abc] ). |
() |
Crea un grupo de captura. |
|
Escapa caracteres especiales (por ejemplo, . coincide con un punto literal). |
Combinación de comodines para patrones complejos
La combinación de comodines crea patrones poderosos. Reemplacemos las palabras que comienzan con «a» seguidas de cualquier carácter:
import re
texto = "Una manzana al día mantiene al médico alejado."
texto_reemplazado = re.sub(r"aw*", "PALABRA", texto, flags=re.IGNORECASE)
print(f"Original: {texto}")
print(f"Reemplazado: {texto_reemplazado}")
aw*
coincide con «a» seguido de cero o más caracteres de palabra (w
).
Ejemplos del mundo real: Extracción de correo electrónico y número de teléfono
re.sub()
sobresale en el manejo de patrones complejos. Reemplacemos las direcciones de correo electrónico con «CORREO ELECTRÓNICO»:
import re
texto = "Contáctanos en [email protected] o [email protected]."
texto_reemplazado = re.sub(r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}", "CORREO ELECTRÓNICO", texto)
print(f"Original: {texto}")
print(f"Reemplazado: {texto_reemplazado}")
Esta expresión regular coincide con un formato de correo electrónico común.
Conclusión
La función re.sub()
, combinada con comodines regex, ofrece un método flexible y eficiente para la manipulación de cadenas en Python. Dominar estas técnicas es valioso para las tareas de procesamiento de texto y limpieza de datos. La construcción cuidadosa de expresiones regulares es crucial para evitar reemplazos no deseados. La experimentación y la comprensión de los matices de los comodines son clave para una manipulación eficaz de cadenas.