Introdução
Bem-vindo(a) à Escola de Magia e Bruxaria de Hogwarts, onde as mentes mais brilhantes do mundo mágico se reúnem para mergulhar nas profundezas da feitiçaria. Entre esses corredores e câmaras escondidas, reside um desafio que até os bruxos mais habilidosos acham perplexo: dominar a arte arcana das Expressões Regulares (Regular Expressions) em Python.
Neste cenário encantado, encontramos nosso protagonista, um talentoso artesão de varinhas conhecido por criar as varinhas mais intrincadas e poderosas. Essas varinhas não são apenas ferramentas, mas carregam consigo a tradição e os segredos do mundo da magia antiga. Para acompanhar as altas demandas de personalização e complexidade, o artesão de varinhas recorreu às Expressões Regulares em Python para otimizar a gravação de runas e frases de encantamento.
O objetivo é claro: aprender e empregar os poderosos feitiços das Expressões Regulares em Python para ajudar nosso artesão de varinhas a organizar e processar textos e fórmulas mágicas de forma mais eficiente. Você consegue aceitar este desafio e se tornar um(a) mago(a) de Expressões Regulares?
Entenda Padrões Básicos
Nesta etapa, você será apresentado aos padrões básicos usados em Expressões Regulares em Python. Com o padrão certo, você pode corresponder (match), pesquisar (search) e filtrar texto, assim como lançar um feitiço preciso. Você praticará a criação de uma expressão regular básica para identificar sequências simples de runas em designs de varinhas.
Vamos começar abrindo um arquivo chamado rune_sequences.py no diretório ~/project e escrever uma expressão regular para encontrar todas as combinações de vogais em um determinado trecho de texto.
import re
## Sample text with imaginary rune sequences
text = "aeiou aci aeiooo cuii exiovi"
## Regular expression pattern to match all vowel combinations
pattern = r"[aeiou]+"
## Finding all matches using the 'findall' method
matches = re.findall(pattern, text)
print("Vowel combinations found:", matches)
Execute o código acima no seu terminal e observe a saída.
python rune_sequences.py
A saída esperada deve listar todas as combinações de vogais da seguinte forma:
Vowel combinations found: ['aeiou', 'a', 'i', 'aeiooo', 'uii', 'e', 'io', 'i']
Extraindo Elementos do Núcleo da Varinha
Agora que você dominou a correspondência de padrões básicos, vamos avançar para algo mais avançado. O artesão de varinhas precisa extrair materiais do núcleo de uma lista. Cada núcleo de varinha é uma palavra composta, geralmente prefixada com uma criatura mágica e sufixada com uma substância mágica.
Abra um arquivo chamado wand_cores.py no diretório ~/project e escreva um padrão de expressão regular para corresponder e listar os núcleos de varinhas do texto fornecido.
import re
## Text with mixed information, including wand cores
text = "dragonheartstring phoenixfeather unicornhair basiliskvenom trollwhisker"
## Regular expression pattern to match wand cores (compound words)
pattern = r"\b\w+heartstring|\b\w+feather|\b\w+hair|\b\w+venom|\b\w+whisker"
## Finding all matches using the 'findall' method
wand_cores = re.findall(pattern, text)
print("Wand cores extracted:", wand_cores)
Execute o código acima e verifique a lista de núcleos de varinhas.
python wand_cores.py
A saída esperada deve exibir os núcleos de varinhas encontrados no texto:
Wand cores extracted: ['dragonheartstring', 'phoenixfeather', 'unicornhair', 'basiliskvenom', 'trollwhisker']
Validar Frases de Encantamento
Como desafio final, validaremos as frases usadas para encantar as varinhas. As frases devem seguir um padrão estrito: Elas devem começar com uma palavra mágica, seguida por dois pontos, e então uma série de parâmetros mágicos ou incantações separados por vírgulas. Uma frase de encantamento válida se parece com 'Lumos:maxima,solemnly,nova'.
Abra enchantment_validator.py no diretório ~/project e escreva uma função que usa uma expressão regular para validar uma lista de frases de encantamento.
import re
def validate_enchantment(phrase):
## Regular expression pattern to match valid enchantment phrases
pattern = r"^[A-Za-z]+:(?:[A-Za-z]+,)*[A-Za-z]+$"
if re.fullmatch(pattern, phrase):
return True
else:
return False
## List of phrases to validate
phrases = [
"Lumos:maxima,solemnly,nova",
"Reducio:shrink,less",
"Protego:maxima",
"Alohomora:",
"Expelliarmus:disarm,fight,duel,"
]
## Validate each phrase
for phrase in phrases:
result = validate_enchantment(phrase)
print(f"'{phrase}' is {'valid' if result else 'invalid'}")
Execute o código e verifique os resultados da validação.
python enchantment_validator.py
A saída esperada deve mostrar quais frases são válidas:
'Lumos:maxima,solemnly,nova' is valid
'Reducio:shrink,less' is valid
'Protego:maxima' is valid
'Alohomora:' is invalid
'Expelliarmus:disarm,fight,duel,' is invalid
Resumo
Neste laboratório, você embarcou em uma jornada mágica pela Escola de Magia e Bruxaria de Hogwarts para dominar os feitiços das Expressões Regulares (Regular Expressions) em Python. Desde a decifração de padrões básicos em sequências de runas até a extração de núcleos de varinhas e a validação de frases de encantamento, você aprimorou suas habilidades para auxiliar o artesão de varinhas.
A esperança é que, através desta abordagem prática, você tenha adquirido uma compreensão e apreciação mais profundas do poder e da versatilidade das regex no processamento de texto. Sua jornada não apenas aprimorou seu repertório de codificação, mas também o imbuíu com a magia do Python no mundo das Expressões Regulares.



