Conheça o Rocketseat Para Empresas
Oferecemos soluções personalizadas para empresas de todos os portes.
Você já tentou extrair informações específicas de um texto extenso e pensou: "por que não existe um jeito mais fácil de fazer isso"? Ele existe, e se chama expressões regulares (RegEx). Combinadas com Python, elas se tornam uma ferramenta incrivelmente poderosa para processar linguagem natural e resolver problemas reais de extração, validação e transformação de dados textuais.
A linguagem natural é caótica por natureza: pessoas escrevem de formas diferentes, com variações, abreviações e estruturas irregulares. Quando você precisa transformar essa bagunça em dados úteis, RegEx entra como a peça-chave. Neste artigo, exploramos como usar Python e expressões regulares para dominar o processamento de texto de forma prática e direta.
O que é processamento de linguagem natural
Processamento de linguagem natural (PLN) é a área da inteligência artificial que trata da interação entre humanos e máquinas por meio da linguagem. Em vez de apenas armazenar texto bruto, o PLN busca compreender, analisar e transformar o conteúdo em algo útil.
Na prática, o PLN resolve problemas como detectar se um e-mail é spam, extrair nomes de pessoas de um documento, validar formatos de dados ou segmentar texto em categorias. Muitos desses problemas começam com uma etapa fundamental: encontrar padrões nos textos. É exatamente aqui que RegEx brilha.
RegEx não é machine learning nem redes neurais. É simplesmente uma forma poderosa de descrever padrões textuais. Você define "quero tudo que pareça um e-mail" e a máquina procura por exatamente esse padrão em qualquer volume de texto.
Fundamentos de expressões regulares
Uma expressão regular é uma sequência de caracteres que define um padrão de busca. Parece intimidador no início, mas a maioria dos padrões comuns segue uma lógica simples e consistente.
Caracteres especiais essenciais
Alguns caracteres têm significados especiais em RegEx:
.qualquer caractere (exceto quebra de linha)
- zero ou mais repetições do caractere anterior
+uma ou mais repetições
?zero ou uma repetição (opcional)
^início da string
$fim da string
[abc]qualquer caractere dentro dos colchetes
[^abc]qualquer caractere exceto os listados
\dqualquer dígito (0-9)
\wqualquer letra, dígito ou underscore
\squalquer espaço em branco
Exemplo prático: validando formatos simples
import re # Validar se começa com número padrao = r'^\d+' texto = "123 é um número" if re.match(padrao, texto): print("Começa com número") # Validar múltiplos padrões padrao_email_simples = r'^[\w.-]+@[\w.-]+\.\w+$' email = "usuario@exemplo.com" print("Email válido?", bool(re.match(padrao_email_simples, email)))
O módulo
re do Python é a biblioteca padrão para trabalhar com expressões regulares. As funções principais são re.search(), re.findall(), re.sub() e re.match(), cada uma com um propósito específico no processamento de texto.Aplicações práticas com Python
Extração de dados estruturados
Um caso de uso clássico é extrair informações específicas de textos desestruturados. Imagine que você recebe descrições de produtos e precisa extrair preços, códigos de SKU ou quantidades.
import re descricao = "Produto XYZ-001 custa R$ 129,90 e temos 50 unidades em estoque" # Extrair código do produto sku = re.search(r'[A-Z]+-\d+', descricao) if sku: print("SKU:", sku.group()) # Extrair preço preco = re.search(r'R\$\s([\d.,]+)', descricao) if preco: print("Preço:", preco.group(1)) # Extrair quantidade quantidade = re.search(r'(\d+)\s+unidades', descricao) if quantidade: print("Quantidade:", quantidade.group(1))
Esse padrão é especialmente útil quando você tem centenas de descrições e precisa estruturá-las em um banco de dados. Em vez de copiar cada valor manualmente, RegEx faz isso em milissegundos.
Limpeza e normalização de texto
Dados brutos frequentemente contêm caracteres extras, espaços duplicados ou formatação inconsistente. RegEx ajuda a padronizar tudo isso de forma eficiente.
import re texto_sujo = " João da Silva trabalha na empresa ABC " # Remover espaços múltiplos texto_limpo = re.sub(r'\s+', ' ', texto_sujo).strip() print(repr(texto_limpo)) # 'João da Silva trabalha na empresa ABC' # Remover pontuação texto_sem_pontos = re.sub(r'[.,!?;:]', '', texto_limpo) print(texto_sem_pontos) # Converter para lowercase mantendo nomes próprios (exemplo simples) texto_padrao = re.sub(r'\s([a-z])', lambda m: ' ' + m.group(1).upper(), texto_limpo.lower())
A função
re.sub() é sua principal aliada para transformar texto. Ela localiza o padrão e substitui pelo conteúdo desejado, inclusive usando funções personalizadas com lambda.Tokenização e segmentação
Tokenização é o processo de quebrar um texto em partes menores chamadas tokens. Podem ser palavras, sentenças ou elementos específicos como hashtags.
import re texto = "Python é incrível! #nlp #programacao Você concorda? Sim, eu concordo." # Extrair hashtags hashtags = re.findall(r'#\w+', texto) print("Hashtags:", hashtags) # Dividir em sentenças sentencas = re.split(r'[.!?]+', texto) sentencas = [s.strip() for s in sentencas if s.strip()] print("Sentenças:", sentencas) # Extrair apenas palavras (sem pontuação) palavras = re.findall(r'\b\w+\b', texto.lower()) print("Palavras:", palavras)
Esses padrões formam a base para análises mais sofisticadas, como contagem de frequência de palavras, análise de sentimento ou extração de tópicos.
Dicas para trabalhar com RegEx eficientemente
Use raw strings (r"...")
Sempre use o prefixo
r antes das suas expressões regulares em Python. Isso evita que a barra invertida seja interpretada como caractere de escape.# Incorreto (pode gerar erros inesperados) padrao = "^\d+\.\d+$" # Correto padrao = r"^\d+\.\d+$"
Teste suas expressões antes de usar em produção
Ferramentas como o regex101.com permitem testar expressões de forma interativa, mostrando exatamente quais partes do texto são capturadas e por quê.
Organize RegEx complexas com comentários
padrao = re.compile(r""" ^ # Início [a-zA-Z0-9._%+-]+ # Usuário @ # Arroba [a-zA-Z0-9.-]+ # Domínio \. # Ponto [a-zA-Z]{2,} # TLD $ # Fim """, re.VERBOSE)
O flag
re.VERBOSE permite adicionar espaços e comentários para tornar a expressão legível e fácil de manter.Combine RegEx com lógica Python adicional
RegEx é poderosa, mas não resolve tudo sozinha. Frequentemente você precisará combiná-la com lógica Python para processar os dados extraídos.
import re textos = [ "João comprou 3 maçãs", "Maria comeu 5 cookies", "Pedro pegou 2 laranjas" ] # Extrair nome e quantidade for texto in textos: match = re.match(r'(\w+)\s+\w+\s+(\d+)', texto) if match: nome, quantidade = match.groups() print(f"{nome}: {int(quantidade) * 2} unidades (dobrado)")
Nesse exemplo, RegEx extrai os dados brutos enquanto Python cuida do processamento lógico. Essa combinação é extremamente flexível e cobre a maioria dos cenários reais.
Casos de uso reais
O processamento de linguagem natural com RegEx é aplicável em diversos contextos profissionais:
- Validação de formulários valide e-mail, telefone, CEP e CPF antes de salvar os dados no banco
- Web scraping extraia títulos, preços e descrições de páginas HTML com padrões precisos
- Processamento de logs analise arquivos de log extensos para encontrar erros, horários de pico ou padrões suspeitos
- Tratamento de dados em CSV recupere e padronize arquivos mal formatados ou com estrutura inconsistente
- Análise de texto conte ocorrências de padrões, encontre menções em redes sociais ou extraia nomes de pessoas e organizações
Próximos passos e recursos
RegEx é apenas o ponto de partida. Depois de dominar os padrões básicos, a próxima evolução natural é explorar bibliotecas como NLTK e spaCy para processamento de linguagem natural mais sofisticado, incluindo análise sintática, reconhecimento de entidades nomeadas e muito mais.
Se você deseja aprofundar seus conhecimentos em processamento de linguagem natural com uma abordagem mais completa, o Curso de Processamento de Linguagem Natural da Rocketseat oferece conteúdo estruturado sobre técnicas avançadas, bibliotecas especializadas e casos práticos que vão além do RegEx.
Para aperfeiçoar suas habilidades com expressões regulares, consulte a documentação oficial do módulo re do Python e use o regex101.com para testar seus padrões antes de aplicá-los no código.
Comece pelos padrões simples apresentados aqui e pratique com textos reais do seu trabalho ou projetos pessoais. RegEx é uma habilidade que se consolida com o uso, e quando você a domina, resolve em minutos problemas que levariam horas de processamento manual.
Conheça o Rocketseat Para Empresas
Oferecemos soluções personalizadas para empresas de todos os portes.
NewsletterReceba conteúdos inéditos e novidades gratuitamente

-2.png&w=640&q=75)