69. Expresiones regulares I
Vídeo
Notas personales
En esta lección, comenzaremos el estudio de las expresiones regulares en Python, que son una secuencia de caracteres que forman un patrón de búsqueda y sirven para el trabajo y procesamiento de texto. Por ejemplo, podemos estar interesados, entre otras tareas, en:
- Buscar un texto que se ajuste a un formato determinado (correo electrónico).
- Buscar si existe o no una cadena de caracteres dentro de un texto.
- Contar el número de coincidencias dentro de un texto.
Conviene que consultemos la
documentación oficial del módulo asociado a las expresiones regulares, re
, en Python.
A continuación, veamos algunos ejemplos sencillos. Empecemos ilustrando el uso del método search()
, que nos permite buscar una cadena de texto concreta y nos ofrece su localización:
import re
cadena = "Vamos a aprender expresiones regulares."
print(re.search("aprender", cadena))
<re.Match object; span=(8, 16), match='aprender'>
Apreciamos que la ejecución nos devuelve un objeto, de tipo Match
, que en el intervalo de caracteres (8, 16)
ha encontrado la cadena de texto de interés, aprender
.
Ahora bien, si insertamos una cadena de texto que no figure en la variable cadena
, el resultado que arroja la ejecución del programa es None
:
import re
cadena = "Vamos a aprender expresiones regulares."
print(re.search("Python", cadena))
None
Obviamente, podemos pasar variables a la función search()
:
import re
cadena = "Vamos a aprender expresiones regulares."
texto_buscar = "aprender"
if re.search(texto_buscar, cadena) is not None:
print("Texto encontrado.")
else:
print("Texto no encontrado.")
Texto encontrado.
Hemos encontrado el texto, efectivamente, pero, ¿en qué carácter comienza? Utilizando el método start()
hallamos la respuesta:
import re
cadena = "Vamos a aprender expresiones regulares."
texto_buscar = "aprender"
texto_encontrado = re.search(texto_buscar, cadena)
print(texto_encontrado.start())
8
Análogamente,
print(texto_encontrado.end())
16
Al hilo de las acciones anteriores, el método span()
nos devuelve una tupla con los valores mostrados arriba:
print(texto_encontrado.span())
(8, 16)
Finalmente, examinemos la utilidad del método findall()
, para lo cual hemos de ampliar un poco la cadena de texto original suministrada:
import re
cadena = '''
Vamos a aprender expresiones regulares en Python.
Python es un lenguaje de sintaxis sencilla.'''
texto_buscar = "Python"
print(re.findall(texto_buscar, cadena))
['Python', 'Python']
Accedemos a una lista que contiene el texto de interés, tantas veces como repeticiones figuren en él. Empleando ahora la función len()
:
import re
cadena = '''
Vamos a aprender expresiones regulares en Python.
Python es un lenguaje de sintaxis sencilla.'''
texto_buscar = "Python"
print(len(re.findall(texto_buscar, cadena)))
2
Código fuente
El código fuente y los posibles ficheros externos generados correspondientes a esta lección se encuentran disponibles para su consulta en la carpeta /lecciones/69/
del
repositorio.