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.
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.")
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)
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']
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)
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)
Algunos patrones regex comunes:
\d
: Coincide con cualquier dígito (0-9).\w
: Coincide con cualquier carácter alfanumérico.\s
: Coincide con cualquier espacio en blanco.^
: Coincide con el comienzo del texto.$
: Coincide con el final del texto.