Fundamentos de Expressões Regulares em Python

PythonBeginner
Pratique Agora

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.