Python Programming

Dominando Coringas Regex com re.sub() do Python

Spread the love

Expressões regulares (regex ou regexp) são ferramentas poderosas para correspondência de padrões em strings. O módulo re do Python oferece funcionalidades robustas para operações regex, com os caracteres curinga desempenhando um papel crucial. Este artigo explora como usar eficazmente caracteres curinga com a função re.sub() para várias tarefas de manipulação de strings.

Sumário

Substituições Regex Básicas com Caracteres Curinga

A função re.sub() é fundamental para substituições regex. Sua sintaxe é re.sub(pattern, replacement, string, count=0, flags=0). O pattern é uma expressão regular, replacement é a string de substituição, string é a entrada, count limita as substituições e flags modificam o comportamento de correspondência. Os caracteres curinga aprimoram dramaticamente a flexibilidade do pattern.

Vamos substituir todas as vogais em uma string por “X”:


import re

text = "Hello, World!"
replaced_text = re.sub(r"[aeiou]", "X", text, flags=re.IGNORECASE)
print(f"Original: {text}")
print(f"Substituído: {replaced_text}")

[aeiou] é um conjunto de caracteres curinga que corresponde a qualquer vogal (sem diferenciação de maiúsculas e minúsculas devido a re.IGNORECASE).

Uso Avançado de Caracteres Curinga e Quantificadores

re.sub() suporta caracteres curinga complexos. Vamos substituir sequências de um ou mais dígitos por “NÚMERO”:


import re

text = "Meu número de telefone é 123-456-7890 e meu CEP é 90210."
replaced_text = re.sub(r"d+", "NÚMERO", text)
print(f"Original: {text}")
print(f"Substituído: {replaced_text}")

d+ corresponde a um ou mais dígitos (d corresponde a um dígito, + significa uma ou mais repetições).

Aqui está uma tabela resumindo os principais caracteres curinga:

Caractere Curinga Descrição
. Corresponde a qualquer caractere, exceto nova linha.
* Corresponde a zero ou mais ocorrências do elemento anterior.
+ Corresponde a uma ou mais ocorrências do elemento anterior.
? Corresponde a zero ou uma ocorrência do elemento anterior.
[] Define um conjunto de caracteres (por exemplo, [abc]).
[^] Define um conjunto de caracteres negado (por exemplo, [^abc]).
() Cria um grupo de captura.
Escapa caracteres especiais (por exemplo, . corresponde a um ponto literal).

Combinando Caracteres Curinga para Padrões Complexos

Combinar caracteres curinga cria padrões poderosos. Vamos substituir palavras que começam com “a” seguidas por quaisquer caracteres:


import re

text = "Uma maçã por dia mantém o médico longe."
replaced_text = re.sub(r"aw*", "PALAVRA", text, flags=re.IGNORECASE)
print(f"Original: {text}")
print(f"Substituído: {replaced_text}")

aw* corresponde a “a” seguido por zero ou mais caracteres de palavra (w).

Exemplos do Mundo Real: Extração de Endereços de E-mail e Números de Telefone

re.sub() se destaca no tratamento de padrões complexos. Vamos substituir endereços de e-mail por “EMAIL”:


import re

text = "Contate-nos em [email protected] ou [email protected]."
replaced_text = re.sub(r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}", "EMAIL", text)
print(f"Original: {text}")
print(f"Substituído: {replaced_text}")

Esta regex corresponde a um formato de e-mail comum.

Conclusão

A função re.sub(), combinada com caracteres curinga regex, oferece um método flexível e eficiente para manipulação de strings em Python. Dominar essas técnicas é valioso para tarefas de processamento de texto e limpeza de dados. A construção cuidadosa de regex é crucial para evitar substituições indesejadas. Experimentação e compreensão das nuances de caracteres curinga são essenciais para uma manipulação eficaz de strings.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *