Expresiones regulares: Módulo re

El módulo re permite trabajar con expresiones regulares (regex), que permiten buscar, manipular y validar texto usando patrones.

Las expresiones regulares se caracterizan por utilizar caracteres reservados para representar cualquier caracter alfanumérico (\w), cualquier número (\d), cualquier espacio (\s)... y así generar complejos patrones de búsqueda.

Los principales métodos son:

re.match(): coincidencia desde el inicio del texto.

re.search(): coincidencia en cualquier parte del texto.

re.findall(): lista de todas las coincidencias.

re.sub(): reemplazar texto.

re.split(): dividir text.

Buscar coincidencias con re.match()

El método match() intenta encontrar una coincidencia desde el comienzo del texto.

import re

text = 'Yo tengo un sapo que se llama Pepe'
regex = r'Yo tengo un (\w+)' # (\w+) significa captura uno o más caracteres alfanuméricos
resultado = re.match(regex, text)

if resultado:
    print(f"Encontré un {resultado.group(1)}")
else:
    print("No encontré nada.")

Buscar en cualquier parte de la cadena con re.search()

El método search() busca el patrón en cualquier parte de la cadena y devuelve la primera coincidencia encontrada.

import re

text = 'Yo tengo un sapo que se llama Pepe'
regex = r'un (\w+) que se llama (\w+)'

match = re.search(regex, text)

if match:
    tipo = match.group(1) # sapo
    nombre = match.group(2) # Pepe
    print (tipo)
    print (nombre)

Buscar todas las coincidencias con re.findall()

El método findall() devuelve una lista de todas las coincidencias en el texto.

text = "yo viví en América, Europa y más tarde en Asia."
pattern = r'[A-Z]\w+' # [A-Z] significa cualquier letra mayúscula de la A a la Z
coincidencias = re.findall(pattern, text)

print(coincidencias) # ['América', 'Europa', 'Asia']

Reemplazar texto con re.sub()

El método sub() se utiliza para reemplazar las coincidencias del patrón por otro texto.

text = 'Yo tengo un sapo que se llama Pepe'
new_text = re.sub('sapo', 'perro', text)
print(new_text)

new_text = re.sub('Pepe', 'Boby', new_text)
print(new_text)

txt = "The rain in Spain"
x = re.sub("s", "9", txt)
print(x)

Dividir una cadena con re.split()

El método split() divide una cadena en una lista basada en un patrón.

respuestas = 'Respuesta 1: SíRespuesta 2: SíRespuesta 3: No'
    correos.append(re.split(pattern, res))
respuestas = re.split(r'Respuesta ', respuestas)
print(respuestas)

Expresiones regulares comunes

Algunos patrones regex comunes:

Home Anterior: Módulos y Librerías Siguiente: Archivos