Introdução às Expressões Regulares em Python
Trabalhar com texto é uma das tarefas mais comuns na programação. As expressões regulares se tornam uma ferramenta indispensável para resolver diversos problemas, como fazer parsing de páginas HTML, validar formatos de dados ou processar arquivos de log.
Em Python, o módulo embutido re é usado para trabalhar com expressões regulares. Neste guia, vamos detalhar o uso de regex em Python, explorando métodos populares como re.search() e re.sub(), e mostrar sua aplicação prática com exemplos reais.
Fundamentos das Expressões Regulares
O que são e para que servem
Expressões regulares (Regular Expressions ou RegEx) são uma linguagem especial para descrever padrões de busca em textos. Com elas, você pode pesquisar, validar e substituir trechos de texto seguindo regras específicas.
Tarefas típicas resolvidas com regex
As expressões regulares em Python resolvem uma ampla gama de problemas:
- Validação de e-mails e números de telefone
- Busca de todos os valores numéricos em um texto
- Substituição de caracteres indesejados e limpeza de dados
- Extração de palavras ou frases específicas de textos grandes
- Parsing de dados estruturados
- Processamento de logs e arquivos de sistema
Preparando o Ambiente
Importando o módulo re
Antes de começar a usar expressões regulares, é necessário importar o módulo específico:
import re
Símbolos e construções básicas
Para trabalhar eficientemente com regex, é essencial conhecer os símbolos principais e suas funções:
| Símbolo | Função |
|---|---|
| . | Qualquer caractere, exceto nova linha |
| \d | Qualquer dígito (0-9) |
| \D | Qualquer caractere não dígito |
| \w | Letra, dígito ou sublinhado |
| \W | Qualquer caractere que não seja \w |
| \s | Espaço, tabulação, nova linha |
| \S | Qualquer caractere que não seja espaço |
| ^ | Início da string |
| $ | Fim da string |
| [] | Um caractere do conjunto especificado |
| * | Zero ou mais repetições |
| + | Uma ou mais repetições |
| {n,m} | De n a m repetições |
Principais Métodos para Trabalhar com Regex
Método re.search() para encontrar a primeira ocorrência
O método re.search() busca a primeira ocorrência de um padrão em uma string. Ele retorna um objeto Match se encontrar algo, ou None caso contrário.
import re
texto = "Email: exemplo@email.com"
match = re.search(r'\w+@\w+\.\w+', texto)
if match:
print("E-mail encontrado:", match.group())
Resultado da execução:
E-mail encontrado: exemplo@email.com
Explicação do padrão de busca
Vamos analisar o padrão usado, parte por parte:
\w+— uma ou mais letras, dígitos ou sublinhados@— o símbolo arroba (elemento obrigatório do e-mail)\.— o ponto (escapado com barra invertida)\w+— o domínio de nível superior
Método re.findall() para encontrar todas as ocorrências
Quando você precisa encontrar todas as ocorrências de um padrão em um texto, use o método findall(). Ele retorna uma lista com todos os resultados encontrados.
texto = "Preços: 100 reais, 250 reais, 350 reais"
numeros = re.findall(r'\d+', texto)
print(numeros) # ['100', '250', '350']
Método re.sub() para substituição por padrão
O método re.sub() substitui todas as ocorrências de um padrão por uma string especificada.
texto = "Telefone: (11) 99999-8888"
texto_limpo = re.sub(r'\D', '', texto)
print(texto_limpo) # '11999998888'