Expressões Regulares (re) em Python – Procurando Padrões em Textos
Em Python, o módulo re fornece suporte completo para regex, permitindo desde buscas simples até construções complexas que reconhecem padrões avançados em textos.
Neste artigo, você vai aprender:
O que são expressões regulares.
Como usar o módulo
reem Python.Metacaracteres e quantificadores mais usados.
Exemplos práticos (e-mails, telefones, CEP, palavras específicas).
Dicas e boas práticas no uso de regex.
🔹 1. O que são Expressões Regulares?
Uma expressão regular é uma linguagem de padrões usada para identificar cadeias de caracteres que seguem determinadas regras.
Exemplo:
Regex:
\d{2}/\d{2}/\d{4}Casa com datas no formato:
25/12/2025,01/01/2000.
Ou seja, em vez de escrever loops complicados para analisar strings, você pode escrever um padrão compacto que descreve o que deseja encontrar.
🔹 2. Importando o módulo re
Em Python, o módulo re é o ponto de partida:
import re
🔹 3. Principais funções do módulo re
re.match(pattern, string)
Verifica se o padrão aparece no início da string.
import re
texto = "Python é incrível"
resultado = re.match(r"Python", texto)
print(resultado) # <re.Match object ...>
re.search(pattern, string)
Procura o padrão em qualquer parte da string.
texto = "Eu gosto de Python"
resultado = re.search(r"Python", texto)
print(resultado.group()) # Python
re.findall(pattern, string)
Retorna todas as ocorrências encontradas em uma lista.
texto = "O preço é 100, depois 200 e finalmente 300"
numeros = re.findall(r"\d+", texto)
print(numeros) # ['100', '200', '300']
re.sub(pattern, repl, string)
Substitui partes do texto que correspondem ao padrão.
texto = "Email: teste@exemplo.com"
novo = re.sub(r"\w+@\w+\.\w+", "[oculto]", texto)
print(novo) # Email: [oculto]
re.split(pattern, string)
Divide o texto usando o padrão como separador.
texto = "um,dois;tres quatro"
partes = re.split(r"[,; ]", texto)
print(partes) # ['um', 'dois', 'tres', 'quatro']
🔹 4. Metacaracteres mais usados
| Símbolo | Significado | Exemplo | Casa com |
|---|---|---|---|
. | Qualquer caractere (exceto nova linha) | a.b | acb, a-b |
^ | Início da string | ^Olá | Olá mundo |
$ | Fim da string | mundo$ | Olá mundo |
* | 0 ou mais repetições | go* | g, go, goo |
+ | 1 ou mais repetições | go+ | go, goo |
? | 0 ou 1 ocorrência | colou?r | color, colour |
{n} | Exatamente n vezes | \d{4} | 2025 |
{n,} | Pelo menos n vezes | \d{2,} | 12, 1234 |
{n,m} | Entre n e m vezes | \d{2,4} | 12, 123, 1234 |
[] | Conjunto de caracteres | [aeiou] | a, e, i |
| ` | ` | Ou (alternativa) | `Python |
() | Agrupamento | (ab)+ | ab, abab, ababab |
🔹 5. Classes de caracteres
\d→ dígito (0-9)\D→ não-dígito\w→ alfanumérico (a-zA-Z0-9_)\W→ não-alfanumérico\s→ espaço, tab, quebra de linha\S→ não-espaço
Exemplo:
texto = "Usuário: João, Id: 1234"
resultado = re.findall(r"\w+", texto)
print(resultado) # ['Usuário', 'João', 'Id', '1234']
🔹 6. Exemplos práticos
6.1 Validando e-mails
email = "teste@dominio.com"
padrao = r"^[\w\.-]+@[\w\.-]+\.\w+$"
if re.match(padrao, email):
print("E-mail válido")
else:
print("E-mail inválido")
6.2 Extraindo números de telefone
texto = "Me ligue: (11) 91234-5678 ou (21) 99876-5432"
telefones = re.findall(r"\(\d{2}\)\s?\d{4,5}-\d{4}", texto)
print(telefones) # ['(11) 91234-5678', '(21) 99876-5432']
6.3 Encontrando CEPs
texto = "O CEP é 12345-678 e o outro é 98765-432"
ceps = re.findall(r"\d{5}-\d{3}", texto)
print(ceps) # ['12345-678', '98765-432']
6.4 Capturando palavras específicas
texto = "Python é divertido. Eu gosto de aprender Python."
resultado = re.findall(r"\bPython\b", texto)
print(resultado) # ['Python', 'Python']
6.5 Substituindo informações sensíveis
texto = "Cartão: 1234-5678-9876-5432"
mascarado = re.sub(r"\d{4}-\d{4}-\d{4}-(\d{4})", "****-****-****-\\1", texto)
print(mascarado) # Cartão: ****-****-****-5432
🔹 7. Flags úteis no re
re.IGNORECASE(re.I) → ignora maiúsculas/minúsculas.re.MULTILINE(re.M) → permite^e$funcionarem em múltiplas linhas.re.DOTALL(re.S) → faz.casar também com quebras de linha.
Exemplo:
texto = "Python é incrível\nPYTHON é poderoso"
resultado = re.findall(r"python", texto, re.I)
print(resultado) # ['Python', 'PYTHON']
🔹 8. Boas práticas
✅ Use raw strings (r"padrão") para evitar problemas com \n, \t.
✅ Prefira regex simples e legíveis – padrões muito complexos dificultam manutenção.
✅ Teste expressões em ferramentas online como regex101.
✅ Documente bem regex mais complicadas.
✅ Evite regex para tarefas triviais que podem ser feitas com startswith, split, etc.
🔹 9. Conclusão
As expressões regulares são indispensáveis quando se trata de buscar e manipular padrões em texto. Com o módulo re, Python oferece:
Funções para buscar (
search,match,findall).Ferramentas para substituir (
sub).Poderosos metacaracteres e quantificadores.
Suporte a flags para maior flexibilidade.
Seja para validar e-mails, extrair telefones, processar logs ou anonimizar dados sensíveis, regex é uma das ferramentas mais poderosas que você pode dominar.

Comentários
Postar um comentário