Cómo utilizar expresiones regulares (Regex) en Python

Domine las expresiones regulares de Python utilizando el módulo re integrado. Aprenda a comparar cadenas, buscar patrones, encontrar todas las apariciones y reemplazar texto.

Pruebe esta solución en el Editor

Descripción general

Las expresiones regulares, comúnmente conocidas como expresiones regulares, son plantillas poderosas que se utilizan para hacer coincidir, buscar y manipular cadenas de texto basadas en patrones específicos. Regex se usa ampliamente para la verificación de correo electrónico, la validación de números de teléfono, el web scraping, el análisis de registros y las tareas de búsqueda y reemplazo de texto. Python proporciona capacidades completas de expresiones regulares a través del módulo incorporado `re`.

El módulo `re` ofrece varias funciones principales según su objetivo. La función `re.search(pattern, string)` escanea una cadena y devuelve un objeto coincidente para la primera aparición del patrón. La función `re.match(pattern, string)` es similar pero solo busca desde el principio de la cadena. Si desea recuperar todas las instancias de un patrón en un bloque de texto, `re.findall(pattern, string)` las devuelve como una lista de cadenas.

Los patrones de expresiones regulares utilizan metacaracteres especiales como `\d` para dígitos, `\w` para caracteres alfanuméricos, `+` para una o más apariciones y `*` para cero o más. Al escribir expresiones regulares en Python, es una práctica estándar utilizar cadenas literales sin formato (con el prefijo `r`, como `r"\d+"`) para evitar que Python trate las barras invertidas como secuencias de escape.

Código y salida de ejecución

Este script demuestra la validación de estructuras de formato, la extracción de tokens numéricos y el reemplazo de patrones coincidentes utilizando el módulo re.

import re

# 1. Searching for a pattern in text
log_message = "ERROR: Connection timeout at 04:30:15 on port 8080"
pattern_port = r"port \d+"

match = re.search(pattern_port, log_message)
if match:
    print("Found port pattern:", match.group())

# 2. Extracting all email addresses from a block of text
text = "Contact sales@pyrun.xyz or support@example.com for help."
pattern_email = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"

emails = re.findall(pattern_email, text)
print("Extracted emails:", emails)

# 3. Replacing patterns using re.sub
date_string = "2026/05/25"
# Replace slashes with dashes
clean_date = re.sub(r"/", "-", date_string)
print("Replaced Date:", clean_date)
Salida terminal
Found port pattern: port 8080
Extracted emails: ['sales@pyrun.xyz', 'support@example.com']
Replaced Date: 2026-05-25

Implementación paso a paso

  • Importe el módulo re incorporado.
  • Defina patrones de búsqueda de expresiones regulares utilizando cadenas sin formato, como r"\d+" para evitar problemas con la secuencia de escape.
  • Utilice re.search() para encontrar la primera aparición o re.findall() para recopilar todas las subcadenas coincidentes.
  • Utilice re.sub(patrón, reemplazo, cadena) para realizar reemplazos basados en patrones dentro del texto.

Preguntas frecuentes

¿Cuál es el beneficio de utilizar cadenas sin formato (r"...") para patrones de expresiones regulares?

Las cadenas sin formato tratan las barras invertidas como caracteres literales en lugar de caracteres de escape. Por ejemplo, r"\n" representa una barra invertida seguida de una "n", mientras que "\n" representa un carácter de nueva línea.

¿Cómo verifico si una coincidencia de expresiones regulares fue exitosa?

re.search() y re.match() devuelven un objeto coincidente si tiene éxito, o Ninguno si no se encuentra ninguna coincidencia. Debe verificar el resultado usando una declaración condicional (por ejemplo, si coincide:).

Temas relacionados

Recursos recomendados de Python

Amplíe sus conocimientos con tutoriales interactivos relacionados, hojas de trucos y comparaciones de códigos.