Conceptos básicos de expresiones regulares en Python

PythonBeginner
Practicar Ahora

Introducción

Bienvenido a la Escuela Hogwarts de Magia y Brujería, donde las mentes más brillantes del mundo mágico se reúnen para profundizar en las profundidades de la hechicería. Entre estos pasillos y cámaras ocultas, existe un desafío que incluso los hechiceros más habilidosos encuentran confuso: dominar el arte arcano de las Expresiones Regulares de Python.

En este entorno encantado, conocemos a nuestro protagonista, un habilidoso herrero de varas conocido por crear las varas más intrincadas y poderosas. Estas varas no son solo herramientas, sino que contienen dentro de sí el saber y los secretos del mundo mágico antiguo. Para mantener el ritmo de las altas demandas de personalización y complejidad, el herrero de varas se ha dirigido a las Expresiones Regulares de Python para racionalizar la grabación de runas y frases de encantamiento.

La meta es clara: aprender y emplear los poderosos hechizos de las Expresiones Regulares de Python para ayudar a nuestro herrero de varas a organizar y procesar textos y fórmulas mágicas de manera más eficiente. ¿Podrás enfrentar este desafío y convertirte en un hechicero de Expresiones Regulares?

Comprender Patrones Básicos

En este paso, se te presentarán los patrones básicos utilizados en las Expresiones Regulares de Python. Con el patrón adecuado, puedes coincidir, buscar y filtrar texto, al igual que lanzar un hechizo preciso. Practicarás crear una expresión regular básica para identificar secuencias simples de runas en los diseños de varas.

Comencemos abriendo un archivo llamado rune_sequences.py en el directorio ~/project y escribiendo una expresión regular para encontrar todas las combinaciones de vocales en un fragmento de texto dado.

import re

## Texto de muestra con secuencias de runas imaginarias
text = "aeiou aci aeiooo cuii exiovi"

## Patrón de expresión regular para coincidir con todas las combinaciones de vocales
pattern = r"[aeiou]+"

## Encontrando todas las coincidencias utilizando el método 'findall'
matches = re.findall(pattern, text)

print("Vowel combinations found:", matches)

Ejecuta el código anterior en tu terminal y observa la salida.

python rune_sequences.py

La salida esperada debería listar todas las combinaciones de vocales como sigue:

Vowel combinations found: ['aeiou', 'a', 'i', 'aeiooo', 'uii', 'e', 'io', 'i']

Extraer Elementos del Núcleo de la Vara

Ahora que has dominado la coincidencia de patrones básicos, pasemos a algo más avanzado. El herrero de varas necesita extraer los materiales centrales de una lista. Cada núcleo de vara es una palabra compuesta, por lo general prefijada con una criatura mágica y sufijada con una sustancia mágica.

Abre un archivo llamado wand_cores.py en el directorio ~/project y escribe un patrón de expresión regular para coincidir y listar los núcleos de vara del texto proporcionado.

import re

## Texto con información mixta, incluyendo núcleos de vara
text = "dragonheartstring phoenixfeather unicornhair basiliskvenom trollwhisker"

## Patrón de expresión regular para coincidir con los núcleos de vara (palabras compuestas)
pattern = r"\b\w+heartstring|\b\w+feather|\b\w+hair|\b\w+venom|\b\w+whisker"

## Encontrando todas las coincidencias utilizando el método 'findall'
wand_cores = re.findall(pattern, text)

print("Wand cores extracted:", wand_cores)

Ejecuta el código anterior y comprueba la lista de núcleos de vara.

python wand_cores.py

La salida esperada debería mostrar los núcleos de vara encontrados en el texto:

Wand cores extracted: ['dragonheartstring', 'phoenixfeather', 'unicornhair', 'basiliskvenom', 'trollwhisker']

Validar Frases de Encantamiento

Como el desafío final, validaremos las frases utilizadas para encantar las varas. Las frases deben seguir un patrón estricto: deben comenzar con una palabra mágica, seguida de dos puntos, y luego una serie de parámetros mágicos o incantaciones separados por comas. Una frase de encantamiento válida tiene el aspecto de 'Lumos:maxima,solemnly,nova'.

Abre enchantment_validator.py en el directorio ~/project, y escribe una función que use una expresión regular para validar una lista de frases de encantamiento.

import re

def validate_enchantment(phrase):
    ## Patrón de expresión regular para coincidir con frases de encantamiento válidas
    pattern = r"^[A-Za-z]+:(?:[A-Za-z]+,)*[A-Za-z]+$"
    if re.fullmatch(pattern, phrase):
        return True
    else:
        return False

## Lista de frases para validar
phrases = [
    "Lumos:maxima,solemnly,nova",
    "Reducio:shrink,less",
    "Protego:maxima",
    "Alohomora:",
    "Expelliarmus:disarm,fight,duel,"
]

## Validar cada frase
for phrase in phrases:
    result = validate_enchantment(phrase)
    print(f"'{phrase}' es {'válida' if result else 'inválida'}")

Ejecuta el código y comprueba los resultados de validación.

python enchantment_validator.py

La salida esperada debería mostrar qué frases son válidas:

'Lumos:maxima,solemnly,nova' es válida
'Reducio:shrink,less' es válida
'Protego:maxima' es válida
'Alohomora:' es inválida
'Expelliarmus:disarm,fight,duel,' es inválida

Resumen

En este laboratorio, emprendiste un viaje mágico por la Escuela Hogwarts de Magia y Brujería para dominar los hechizos de las Expresiones Regulares de Python. Desde descifrar patrones básicos en secuencias de runas hasta extraer los núcleos de vara y validar frases de encantamiento, has afinado tus habilidades para ayudar al herrero de varas.

Es de esperar que a través de este enfoque práctico hayas adquirido una comprensión más profunda y una apreciación de la potencia y versatilidad de las expresiones regulares en el procesamiento de texto. Tu viaje no solo ha mejorado tu repertorio de codificación, sino que también te ha inmerso en la magia de Python en el mundo de las Expresiones Regulares.