Patrones avanzados de expresiones regulares

Grupos con nombre, búsquedas anticipadas y coincidencias aproximadas.

Pruébelo en el editor

Descripción general

El paquete regex actúa como un reemplazo directo del re.

Esto admite ampliamente árboles de búsqueda difusa y dictados de agrupaciones con nombres aislados y listos para usar.

Código y salida de ejecución

Analiza un diseño de registro de seguridad y realiza 1 coincidencia difusa de sustitución.

import regex

# Named capture groups — parse a log line
log = "2025-07-04 14:32:01 ERROR  [auth] Login failed for user@example.com"
pattern = r"(?P<date>\d{4}-\d{2}-\d{2}) (?P<time>\d{2}:\d{2}:\d{2}) (?P<level>\w+)\s+\[(?P<module>\w+)\] (?P<message>.+)"
m = regex.match(pattern, log)
if m:
    print("Match Breakdown:")
    for k, v in m.groupdict().items():
        print(f"  {k:<10}: {v}")

# Fuzzy matching (allows 1 substitution)
print("\nFuzzy search for 'colour' (≤1 error):")
text = "I prefer colour and cilor and colouur"
for hit in regex.finditer(r"(?:colour){s<=1}", text):
    print(f"  found '{hit.group()}' at {hit.span()}")
Salida terminal
Match Breakdown:
  date      : 2025-07-04
  time      : 14:32:01
  level     : ERROR
  module    : auth
  message   : Login failed for user@example.com

Fuzzy search for 'colour' (≤1 error):
  found 'colour' at (9, 15)
  found 'colouur' at (30, 37)

Implementación paso a paso

  • Regex analizando datos de texto
  • Raspado de troncos difusos
  • Patrones de normalización de cadenas

Preguntas frecuentes

Temas relacionados