A tu propio ritmo

Explora nuestra extensa colección de cursos diseñados para ayudarte a dominar varios temas y habilidades. Ya seas un principiante o un aprendiz avanzado, aquí hay algo para todos.

Bootcamp

Aprende en vivo

Únete a nosotros en nuestros talleres gratuitos, webinars y otros eventos para aprender más sobre nuestros programas y comenzar tu camino para convertirte en desarrollador.

Próximos eventos en vivo

Catálogo de contenidos

Para los geeks autodidactas, este es nuestro extenso catálogo de contenido con todos los materiales y tutoriales que hemos desarrollado hasta el día de hoy.

Tiene sentido comenzar a aprender leyendo y viendo videos sobre los fundamentos y cómo funcionan las cosas.

Full-Stack Software Developer - 16w

Data Science and Machine Learning - 16 wks

Buscar en lecciones


IngresarEmpezar
← Regresar a lecciones

Weekly Coding Challenge

Todas las semanas escogemos un proyecto de la vida real para que construyas tu portafolio y te prepares para conseguir un trabajo. Todos nuestros proyectos están construidos con ChatGPT como co-pilot!

Únete al reto

Podcast: Code Sets You Free

Un podcast de cultura tecnológica donde aprenderás a luchar contra los enemigos que te bloquean en tu camino para convertirte en un profesional exitoso en tecnología.

Escuchar el podcast
Editar en Github

Expresiones Regulares en Python: Domina la Potencia del Patrón de Búsqueda

Metacaracteres en expresiones regulares

Las expresiones regulares en Python se utilizan para validar y manipular texto, ya que estas son patrones que nos ayudan a encontrar coincidencias en cadenas de texto.

Un ejemplo de uso de una expresión regular en Python podría ser para buscar un número de teléfono en un texto.

1import re 2 3saludo = "Hola, ¿cómo estás? Mi número de teléfono es 153-156-5555." 4 5# Buscar un número de teléfono en el texto. 6numero = re.search('\d{3}-\d{3}-\d{4}', saludo) 7 8if numero: 9 print("Número encontrado:", numero.group()) 10else: 11 print("No se encontró ningún número.")

En este ejemplo utilizamos la función search(), la cual buscará en la cadena de texto saludo si hay alguna coincidencia con la expresión regular /\d{3}-\d{3}-\d{4}/, si encuentra un número que coincida con el patrón de búsqueda, se imprime en pantalla que se encontró. De lo contrario, se muestra un mensaje indicando que no se encontró ningún número.

Metacaracteres en expresiones regulares

Antes de comenzar a explicar como se utilizan las expresiones regulares en Python, debemos conocer el significado de los metacaracteres los cuales nos ayudarán a construir nuestras expresiones regulares y asi definir nuestros patrones de búsqueda, estos son algunos de ellos.

Caracter especialEjemploDescripción
^expReg = / ^ a/El texto debe comenzar por “a”
$expReg = /a $/El texto debe terminar en “a”
*expReg = /a */El caracter “a” debe aparecer 0 o más veces
?expReg = /abc ?/Se busca “abc” en todo el texto, para ser válido debe al menos encontrar “ab”, “c” es opcional
\dexpReg = /\d/Busca cualquier dígito entre 0 y 9
[]expReg = /[abc]/Será válido si el texto contiene a,b o c
()expReg = /([a-z] {2,} [0-9] {3,5})/Sirve para agrupar distintas expresiones regulares
{n,m} donde m > nexpReg = /a {3,4}/Será válido si en el texto hay alguna coincidencia, con “aaa” o “aaaa”

Métodos de Expresiones Regulares en Python

Para poder utilizar las expresiones regulares en Python primero debemos importar en nuestro código el módulo re, de esta manera podemos empezar a utilizar los métodos proporcionados por este módulo, el cual nos permitirá empezar a manipular texto haciendo uso de estas.

Existen distintos métodos para trabajar con expresiones regulares en Python, por ejemplo el método search(), el cual busca una coincidencia en la cadena de texto y retorna un objeto Match (objeto que contiene información de la búsqueda) si hay coincidencia, de lo contrario devolverá None, cabe destacar que este método solo retornara la primera coincidencia.

1import re 2 3frases = ["Python es uno de los lenguajes mas utilizados por los programadores", "JavaScript es uno de los lenguajes mas utilizados por los programadores"] 4 5patron = "Python" 6 7for frase in frases: 8 busqueda = re.search(patron, frase) 9 if busqueda: 10 print("Encontrado!", busqueda.group()) 11 else: 12 print("No encontrado", busqueda) 13

Para este ejemplo, se utiliza la función search() para buscar la palabra Python en los elementos de la lista frases.En este caso, en la primera iteración del ciclo for se imprimirá por la terminal Encontrado! Python, mientras que en la segunda iteración se imprimirá No encontrado None.

Supongamos que ahora queremos buscar todas las palabras que comienzan con "t" en un texto. Podemos hacerlo de la siguiente manera:

1import re 2 3texto = "tres tristes tigres, tragaban trigo en un trigal, en tres tristes trastos, tragaban trigo tres tristes tigres." 4 5patron = r"\bt\w+" 6 7palabras = re.findall(patron, texto) 8 9print(palabras) # ['tres', 'tristes', 'tigres', 'tragaban', 'trigo', 'trigal', 'tres', 'tristes', 'trastos', 'tragaban', 'trigo', 'tres', 'tristes', 'tigres']

Para este ejemplo, utilizamos el método findall() el cual retorna una lista de todas las palabras que coinciden con el patrón.

Otro ejemplo, en este caso muy común en el desarrollo de aplicaciones, es cuando necesitamos validar si un correo electrónico es válido o no, para ello podemos hacer uso del método match, el cual intenta encontrar una coincidencia exacta entre el patrón y el inicio de la cadena. Si se encuentra una coincidencia, la función devuelve un objeto de la coincidencia. En caso contrario, devuelve None.

1import re 2 3def validar_correo(correo): 4 patron = r'^(?=.*[a-zA-Z])[a-zA-Z0-9_.+-]+@(gmail|hotmail|outlook)\.(com)$' 5 test = re.match(patron, correo) 6 if re.match(patron, correo): 7 print("Dirección de correo válida.") 8 else: 9 print("Dirección de correo inválida.") 10 11 12validar_correo("carlos@gmail.com") # Dirección de correo válida. 13validar_correo("hola.com") # Dirección de correo inválida.

En este ejemplo por medio del método match() verificamos si el correo electrónico que le pasamos a la función validar_correo es un correo válido gmail, hotmail o outlook

También existen métodos que nos permiten reemplazar palabras o caracteres por otros, que se encuentren dentro de una cadena de texto, para ello podemos utilizar el método sub(), veamos un ejemplo:

1import re 2 3# Reemplazar todas las vocales de una cadena de texto por el carácter 'X' 4frase = "las vocales son a e i o u" 5resultado = re.sub('[aeiou]', 'X', frase) 6print(resultado) # lXs vXcXlXs sXn X X X X X 7

En el ejemplo se utiliza la expresión regular /[aeiou]/ para detectar todas las vocales en la cadena de texto frase. Luego, usamos el método sub() para reemplazar cada vocal encontrada por el caracter 'X'. La variable resultado será la cadena de texto frase modificada, donde todas las vocales han sido reemplazadas.

En ocasiones necesitamos dividir algún texto en partes, excluyendo algún tipo de delimitador, como puede ser un espacio vacío, una coma, un punto, etc. Para ello podemos hacer uso del método split(), veamos un ejemplo.

1import re 2 3texto = "Hola, ¿cómo estás? Espero que bien" 4resultado = re.split('\W+', texto) 5print(resultado) # ['Hola', 'cómo', 'estás', 'Espero', 'que', 'bien']

Al usar split(), obtenemos una lista con todas las palabras de la cadena, excluyendo todos los caracteres que no son alfanuméricos.

Casos de uso comunes de las expresiones regulares en Python

Luego de haber entendido cómo utilizar las expresiones regulares en Python y ver algunos ejemplos de como implementarlas, podemos enumerar algunos casos de uso comunes, como lo son:

  1. Validar formatos: Las expresiones regulares permiten verificar si una cadena de texto cumple con un patrón específico, como direcciones de correo electrónico, números de teléfono o contraseñas.

  2. Extraer información: Se pueden utilizar expresiones regulares para extraer datos específicos de un texto, como fechas, URLs, nombres o números.

  3. Filtrar contenido: Con las expresiones regulares, es posible filtrar y eliminar contenido no deseado de un texto, como etiquetas HTML, caracteres especiales o espacios en blanco innecesarios.

En resumen, las expresiones regulares en Python son una herramienta esencial para trabajar con texto y realizar operaciones avanzadas de búsqueda y manipulación. Con lo aprendido en este artículo, deberías ser capaz de utilizar expresiones regulares en tus propios proyectos de Python, si deseas conocer más sobre qué es Python puedes revisar el Blog de 4Geeks.