Expresiones Regulares (Regular Expressions)
Propósito: Se utilizan para buscar patrones dentro de cadenas de texto.
Concepto: Define una regla que, si es cumplida por una cadena, se considera que esta "coincide" con el patrón; de lo contrario, la cadena no es válida.
Formato: Las expresiones regulares son representadas como cadenas de texto. Nota: Usar comillas.
import re
re.split(pattern=r'\W+', string='Hola,mundo!') # Divide la cadena
re.match(pattern=r'^\w+', string='Hola mundo') # Coincide con un patrón al inicio
patron = re.compile(r'^\w+')
patron.match('Hola mundo').groups() # Devuelve una tupla de subcadenas coincidentes
patron.match('Hola mundo').group(0) # Devuelve toda la cadena coincidente
patron.match('Hola mundo').group(1) # Devuelve la primera subcadena coincidente
# Para evitar la coincidencia codiciosa, añade un ?
El módulo re y las Expresiones Regulares
Evitar Secuencias de Escape: Utiliza el prefijo r en Python para evitar problemas con secuencias de escape.
Coincidir: Usar re.match(pattern, string) para determinar si existe una coincidencia. Retorna un objeto de coincidencia o None.
Dividir Cadenas: Usa re.split() para dividir cadenas basándose en un patrón.
Coincidencia Codiciosa: Por defecto, las expresiones regulares intentan coincidir con tentos caracteres como sea posible.
Agrupaicón: Puedes extraer subcadenas usando paréntesis () para definir grupos.
Sustitución: Con re.sub(patron_viejo, patron_nuevo, cadena) puedes reemplazar partes de una cadena. Ejemplo: re.sub(r'\d', '-', 'prueba123').
Precompilación
Cuando usas expresiones regulares en Python:
- Compila la expresión regular, si el patrón es inválido, lanzará un error.
- Aplica la expresión compilada a la cadena de texto.
patron = re.compile(r'^\w+')
patron.match('Texto de prueba').groups()
Ejemplos:
re.findall(r'\w+', 'Este es un ejemplo')dveuelve todas las palabras como una lista.
Métodos Comunes del Módulo re:
# A continuación, 'texto' se refiere a la cadena original que se desea procesar
re.match(pattern, texto) # Busca una coincidencia al inicio de la cadena
re.search(pattern, texto, flags=0) # Busca la primera coincidencia en cualquier parte de la cadena
re.findall(pattern, texto) # Encuentra todas las coincidencias posibles y retorna una lista
re.sub(pattern_antiguo, pattern_nuevo, texto, count=0, flags=0) # Reemplaza ocurrencias del patrón antiguo por el nuevo
re.subn(pattern_antiguo, pattern_nuevo, texto) # Similar a re.sub pero también devuelve el número de sustituciones hechas
re.split(pattern, texto) # Divide la cadena según el patrón especificado