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
- Uso Avançado de Caracteres Curinga e Quantificadores
- Combinando Caracteres Curinga para Padrões Complexos
- Exemplos do Mundo Real: Extração de Endereços de E-mail e Números de Telefone
- Conclusão
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.