Poderoso lenguaje para hacer coincidir patrones de texto
Con Python el módulo 're' es el que les da soporte
match = re.search(pat, str)
Las reglas básicas de las expresiones regulares para buscar un patrón en una cadena son
Chiste: what do you call a pig with three eyes? piiig!
Primero encuentra la coincidencia de más a la izquierda del patrón, y segundo intenta usar todo lo que pueda de la cadena -- Ej. + y * abarcan lo más posible (el + y * son "codiciosos").
Suponiendo que queremos encontrar la dirección de correo dentro de la cadena 'xyz alice-b@google.com mono violeta'
Notar que la búsqueda no devuelve todo el email porque \w no encuentra '-' o '.'
Encuentra todas las ocurrencias del patrón
# Open file
f = open('test.txt', 'r')
# Alimenta el archivo de texto en findall(); retorna una
# lista de todas las cadenas encontradas
strings = re.findall(r'algun patron', f.read())
Las funciones de re aceptan opciones para modificar su comportamiento, la opción se agrega como un argumento extra a search() o findall() ,ej: re.search(pat, str, re.IGNORECASE)
import re
str = 'xyz alice-b@google.com mono violeta bob@abc.com bla lavaplatos'
## re.sub(patron, reemplazo, cadena) -- retorna una nueva cadena con
## todo reemplazado, \1 es group(1), \2 group(2) en el reemplazo
print re.sub(r'([\w\.-]+)@([\w\.-]+)', r'\1@yo-yo-dyne.com', str)