Expresiones regulares en Python: Guía completa para principiantes
Las expresiones regulares, a menudo conocidas como regex o regular expression python, son herramientas poderosas para buscar, coincidir y manipular texto. En esencia, una regular expression es una secuencia de caracteres especiales que define un patrón de búsqueda. En Python, el módulo re facilita la interacción con expresiones regulares.
Introducción a las expresiones regulares
Imagine que necesita encontrar todas las direcciones de correo electrónico en un texto extenso. O tal vez quiere reemplazar todas las fechas en un archivo con un formato específico. Las expresiones regulares le permiten realizar estas tareas de manera eficiente y precisa.
Un ejemplo simple de una regular expression es d+, que busca uno o más dígitos. Al aplicarlo al texto «El número de teléfono es 1234567890», la expresión regular coincidirá con la secuencia «1234567890».
El módulo re en Python
El módulo re de Python proporciona funciones para trabajar con expresiones regulares. Una función clave es re.findall(), que busca todas las coincidencias de una expresión regular en una cadena de texto y devuelve una lista de resultados.
Para evitar interpretaciones erróneas de caracteres especiales, es importante utilizar cadenas crudas (r'...') al definir expresiones regulares en Python. Por ejemplo, r'd+' se interpreta como una regex literal, mientras que 'd+' podría interpretarse como un escape de carácter.
Metacaracteres especiales en expresiones regulares
Las expresiones regulares utilizan metacaracteres especiales para representar patrones de texto. Algunos de los metacaracteres más comunes incluyen:
.: Coincide con cualquier carácter, excepto un salto de línea.d: Coincide con cualquier dígito.w: Coincide con cualquier caracter alfanumérico (letras, números y guion bajo).s: Coincide con cualquier espacio en blanco (espacio, tabulación, salto de línea).*: Coincide con cero o más repeticiones del carácter anterior.+: Coincide con una o más repeticiones del carácter anterior.?: Coincide con cero o una repetición del carácter anterior.[]: Define un conjunto de caracteres.^: Coincide con el inicio de la línea.$: Coincide con el final de la línea.
Funciones principales del módulo re
El módulo re ofrece varias funciones esenciales para trabajar con expresiones regulares en Python.
re.match()
La función re.match() intenta encontrar una coincidencia desde el principio de la cadena de texto. Si la coincidencia se encuentra, devuelve un objeto coincidencia; de lo contrario, devuelve None.
«`python
import re
texto = «El número de teléfono es 1234567890»
patron = r’d+’
coincidencia = re.match(patron, texto)
if coincidencia:
print(«Coincidencia encontrada:», coincidencia.group(0))
else:
print(«No se encontró coincidencia»)
«`
re.search()
La función re.search() busca la primera coincidencia de la regex en la cadena de texto. Si se encuentra una coincidencia, devuelve un objeto coincidencia; de lo contrario, devuelve None.
«`python
import re
texto = «El número de teléfono es 1234567890»
patron = r’d+’
coincidencia = re.search(patron, texto)
if coincidencia:
print(«Coincidencia encontrada:», coincidencia.group(0))
else:
print(«No se encontró coincidencia»)
«`
re.findall()
La función re.findall() busca todas las coincidencias de la regex en la cadena de texto y devuelve una lista de las coincidencias.
«`python
import re
texto = «El número de teléfono es 1234567890 y el código postal es 12345»
patron = r’d+’
coincidencias = re.findall(patron, texto)
print(«Coincidencias encontradas:», coincidencias)
«`
re.sub()
La función re.sub() reemplaza todas las coincidencias de la regex en la cadena de texto con una nueva cadena.
«`python
import re
texto = «El número de teléfono es 1234567890»
patron = r’d+’
textoreemplazado = re.sub(patron, «XXXX», texto)
print(«Texto reemplazado:», textoreemplazado)
«`
re.compile()
La función re.compile() compila una regex en un objeto patrón que se puede utilizar para ejecutar varias búsquedas y reemplazos. Esto puede mejorar el rendimiento cuando se trabaja con expresiones regulares complejas o se busca en un gran volumen de datos.
«`python
import re
patron = re.compile(r’d+’)
texto = «El número de teléfono es 1234567890»
coincidencia = patron.search(texto)
if coincidencia:
print(«Coincidencia encontrada:», coincidencia.group(0))
else:
print(«No se encontró coincidencia»)
«`
Casos de uso específicos
Las expresiones regulares tienen aplicaciones diversas en varios dominios. Algunos ejemplos comunes incluyen:
Validación de datos
Las expresiones regulares se utilizan ampliamente para validar datos, como direcciones de correo electrónico, números de teléfono, fechas y códigos postales. Por ejemplo, una regex para validar una dirección de correo electrónico podría ser: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$.
Extracción de información
Las expresiones regulares pueden extraer información específica de un texto. Por ejemplo, una regex para extraer nombres de personas de un texto podría ser: [A-Z][a-z]+.
Búsqueda y reemplazo
Las expresiones regulares son ideales para buscar y reemplazar patrones específicos en texto. Por ejemplo, una regex para reemplazar todas las ocurrencias de «www.» con «http://» en un texto podría ser: r'www.'.
Modificadores de expresiones regulares
Los modificadores se utilizan para modificar el comportamiento de las expresiones regulares. Algunos modificadores comunes incluyen:
re.I: Ignora la distinción entre mayúsculas y minúsculas.re.M: Trata la cadena de texto como varias líneas.re.S: Trata la cadena de texto como una sola línea (ignora los saltos de línea).
Patrones comunes de expresiones regulares
| Patrón | Descripción |
|—|—|
| d | Cualquier dígito |
| w | Cualquier caracter alfanumérico |
| s | Cualquier espacio en blanco |
| . | Cualquier carácter (excepto salto de línea) |
| * | Cero o más repeticiones |
| + | Una o más repeticiones |
| ? | Cero o una repetición |
| [] | Conjunto de caracteres |
| ^ | Inicio de línea |
| $ | Final de línea |
Conclusión
Las expresiones regulares en Python son una herramienta indispensable para el procesamiento de texto. Desde la validación de datos hasta la extracción de información, las regex proporcionan una forma eficiente y flexible de trabajar con patrones de texto. Al comprender los conceptos básicos, los metacaracteres especiales y las funciones del módulo re, podrá aplicar expresiones regulares en su trabajo con Python de manera efectiva.