Las expresiones regulares son secuencias de caracteres que se comportan como un patrón de búsqueda y que facilitan la búsqueda en cadenas de caracteres. En estas secuencias de caracteres se usa la barra invertida para indicar formas especiales o para añadir caracteres
Para usar las expresiones regulares en Python es necesario importar el módulo re.
import rePara comenzar a usar el módulo es necesario saber cómo construir las expresiones regulares o patrones de búsqueda. Estos son algunos de los mas usados:
| regex | Descripción | Ejemplo | 
| ^ | Lo que se busca tiene que estar al principio de la línea. | Busca cualquier palabra que comience por zo y que tenga algún carácter detrás que no sea un espacio en blanco: ‘^zo\S*’ | 
| $ | Al final de la línea. | .*o’ | 
| . | Cualquier carácter. | Busca | 
| * | Cero o mas caracteres de lo que le digamos anteriormente | |
| + | Igual que * pero de un carácter o mas. | |
| \s | Cualquier espacio en blanco. | |
| \S | Cualquier carácter distinto de un espacio en blanco. | |
| [a-z] | Cualquier carácter de la a a la z en minúsculas. | |
| [A-Z] | Cualquier carácter de la A a la Z en mayúsculas. | |
| [0-9] | Cualquier número. | |
| [a-zA-Z0-9] | Cualquier carácter en minúsculas, mayúsculas o cualquier número. | |
| [.] | El punto. | |
| \w | Cualquier carácter alfanumérico. | 
El siguiente ejemplo dividirá una frase en palabras y se buscarán todas las palabras que comiencen por ‘mu’. El patrón es ^ que indica que lo viene detrás tiene que estar al principio de la línea, luego mu seguido de .+, es decir lo que comience por mu y contenga al menos un carácter detrás ‘^mu.+’. El resultado de la búsqueda con el patrón es murciélago.
>>> import re
>>> texto = 'El veloz murciélago hindú comía feliz cardillo y kiwi.'
>>> patron = '^mu.+'
>>> textosplit = texto.split()
>>> for palabra in textosplit:
...     busqueda = re.findall(patron,palabra)
...     if len(busqueda) > 0:
...             print(busqueda)
... 
['murciélago']Se pueden usar los siguientes métodos para buscar con expresiones regulares.
match(patrón, cadena, flags=0)
Aplica el patrón al principio de la cadena, devolviendo el objeto coincidente con el patrón, en caso negativo devuelve None.
fullmatch(patrón, cadena, flags=0)
A diferencia de match, fullmatch aplica el patrón a toda la cadena en vez de sólo al principio.
search(patrón, cadena, flags=0)
Busca el patrón a través de la cadena devolviendo el objeto coincidente, en caso de no encontrar nada devuelve None.
>>> texto = "El veloz zorro marrón saltó sobre el perro peresozo"
>>> re.search('zorro',texto)
<re.Match object; span=(9, 14), match='zorro'>
>>> texto[9:14]
'zorro'findall(patrón, cadena, flags=0)
Devuelve una lista de todas las ocurrencias en la cadena. Si hay grupos en los patrones y se encuentran resultados, se devuelven listas de grupos en forma de listas de tuplas.
>>> import re
>>> texto = "El veloz zorro marrón saltó sobre el perro peresozo. Si que era rápido el zorro."
>>> re.findall('zorro',texto)                                              
['zorro', 'zorro']sub(patrón, reemplazo, cadena, contador=0, flags=0)
Devuelve la cadena obtenida tras, sustituir en la cadena pasada, por la parte izquierda, el patrón por su reemplazo.
>>> import re
>>> cadena = "Eso si que es un camión"
>>> cadenarepl = re.sub('cam','av',cadena)
>>> print(cadenarepl)
Eso si que es un aviónsubn(patrón, reemplazo, cadena, contador=0, flags=0)
Es igual que sub, pero también devuelve el número de sustituciones que ha hecho. El resultado se obtiene en una tupla con 2 valores, la cadena obtenida y el número de veces que se ha realizado el reemplazo.
>>> import re
>>> cadena = "Eso si que es un camión. El camión de tus sueños."
>>> cadenarepl = re.subn('cam','av',cadena)
>>> print(cadenarepl)
('Eso si que es un avión. El avión de tus sueños.', 2)split(patrón, cadena, maxsplit=0, flags=0)
Divide una cadena en base a las ocurrencias del patrón, eliminándolas de la lista. Si el patrón se incluye entre paréntesis también se incluye en el resultado. Si maxsplit es diferente a cero se produce un máximo de maxsplit ocurrencias.
>>> import re
>>> texto = "El veloz zorro marrón saltó sobre el perro peresozo"
>>> listasin = re.split('zorro|perro',texto)
>>> listasin
['El veloz ', ' marrón saltó sobre el ', ' peresozo']
>>> listasin = re.split('\s',texto)
>>> listasin
['El', 'veloz', 'zorro', 'marrón', 'saltó', 'sobre', 'el', 'perro', ‘peresozo']