Processamento de linguagem natural com Python e RegEx

Rocketseat

Rocketseat

5 min de leitura
https://prod-files-secure.s3.us-west-2.amazonaws.com/08f749ff-d06d-49a8-a488-9846e081b224/02e63f4b-8380-448e-908a-5f7460216304/processamento-linguagem-natural-python-regex.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB466S2RGEJHL%2F20260624%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260624T092241Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEGkaCXVzLXdlc3QtMiJHMEUCIBv75zRr0sKoKu9UUfPbJQGTn5L1RYwECIt%2BzlHIB%2BYiAiEAtiP1ZJudkLcD7UG9zGUE5cY200FftZJlyzFK7AoXF4wq%2FwMIMRAAGgw2Mzc0MjMxODM4MDUiDNVKQoKLBSPQiqdg%2ByrcA1J5IMP9smKJjNvJTB6caLP7VyO5sGHDv%2B0bPllMhGcuh1ElGlqpgAZsVKiPI5lwCC0HaLgw3oLMF5GTTs%2BnxsiuPkw8st%2BazKLBEUBn%2FjJgCKkGjVuimx4%2BPKnOtSx9WAKOE7hHFbyUKd9I8e42gdOfPp7op%2FUxVq3AKxZejV57ITwPSb00J0jCUhyVXcBbKCYebplnpmojrlmYfB5Tle7r%2B1jXYyRapCaN0xXP7uj87vGxYk4qbxrrvNVknd7h0q7dWGiqJHGPfhdrHz83iQystKp60bmkyt9LyquIHCpIteXCrcKMk9xvDZCDyCbs%2FaUVgrLKiyNOb%2FQjHJVgv8EHhZDwHs9XhF4KQjSVR0%2FqHEdwORCPR1WN9aJA97XaFksH9gaJ3jSj0yN2r1e89VcPaJMnZmHXhIqOpKTjc8suBB0epUAwCcxG%2FGv%2FdaQS34Zsv9FrO9YRzrciG4JAWKTK3c6AFT5ntFq1AVy4SHcC4idy8XjQ%2BQGmPcjL2L6YfUAQblkVun6Xwi06I69b64sQDP6SZK09DGp5c0WgphKG59AkMpbPqeiNtjy7YafdJItOToBd6AZsKon%2FS1pdAo3WqM9VAVdgv%2Fon6mEu30nooYDGlQrvsIjGPy9%2BMNal7tEGOqUBjkBViNB4UmAonFyC%2FXdumd3mmqgWExgyh5PUhWI2aMu22eiC3C%2ByCTnWiieGNuxtDvxuJaocZ%2BJhy%2Fmc5YQHTcMQmVVgAUKu2VdlDnuEPqEaaq1aQnhpPhHBrj4zP5U%2FNV4CFxLtTa%2Bb4LB%2FcREItw742%2FO%2Bx7NauW8P9stRHkd7X5P6LFRkuv0jliMyZLAr99cSEKhAjAuamsNNShiqMC445pes&X-Amz-Signature=fe9da88c988638d3928f153feb88c8c9a14ae10d52a39fd53ac9f6987e69e25d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject
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
  • \d qualquer dígito (0-9)
  • \w qualquer letra, dígito ou underscore
  • \s qualquer 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.

Rocketseat

Rocketseat

Ecossistema de educação contínua referência em programação e Inteligência Artificial.

Imagem contendo uma carta e um símbolo de check
NewsletterReceba conteúdos inéditos e novidades gratuitamente