Expressões Regulares no Python: Técnicas de Correspondência, Substituição e Divisão

Conceitos Fundamentais

Expressões regulares são padrões de texto usados para identificar, manipular e extrair informações de strings. Em Python, o módulo re fornece ferramentas para processar esses padrões de forma eficiente. Este guia aborda os princípios essenciais e aplicações práticas para manipulação de texto.

Aplicações típicas incluem verificação de correspondências em cadeias de caracteres, localização de subsequências específicas, substituição de partes do texto e segmentação de strings com base em delimitadores complexos.

Meta-caracteres Importantes

  • . – corresponde a qualquer caractere, exceto quebras de linha.
  • ^ – indica o início da string.
  • $ – indica o final da string.
  • * – zero ou mais ocorrências do elemento anterior.
  • + – uma ou mais ocorrências.
  • ? – zero ou uma ocorrência.
  • {n} – exatamente n repetições.
  • {n,} – pelo menos n repetições.
  • {n,m} – entre n e m repetições.
  • [] – define uma classe de caracteres.
  • () – agrupa expressões para captura ou aplicação de quantificadores.

Buscando Substrings

Para localizar substrings que correspondam a um padrão, utilize as funções re.search e re.match. A primeira procura em qualquer lugar da string, enquanto a segunda verifica apenas no início.

import re

entrada = "Contato principal: ana.silva@empresa.org, secundário: 111-222-3333."

regex_correio = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
regex_telefone = r"\d{3}-\d{3}-\d{4}"

# Localiza o primeiro endereço de e-mail
resultado_correio = re.search(regex_correio, entrada)
if resultado_correio:
    print("E-mail detectado:", resultado_correio.group(0))

# Verifica correspondência de telefone no início
resultado_telefone = re.match(regex_telefone, entrada)
if not resultado_telefone:
    print("Nenhum telefone encontrado no início da string")

# Encontra todos os e-mails na entrada
todos_correios = re.findall(regex_correio, entrada)
print("E-mails encontrados:", todos_correios)

Substituindo Partes do Texto

A função re.sub permite substituir subsequências que casam com um padrão por um texto novo, enquanto re.subn também retorna o número de substituições realizadas.

import re

mensagem = "Agendar com pedro@email.com ou ligar para 444-555-6666."

padrao_correio = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
padrao_telefone = r"\d{3}-\d{3}-\d{4}"

# Substitui e-mails por marcadores
mensagem_modificada = re.sub(padrao_correio, "[PROTEGIDO]", mensagem)
print("Após substituição de e-mails:", mensagem_modificada)

# Substitui telefones e obtém contagem
mensagem_final, total_substituicoes = re.subn(padrao_telefone, "[PROTEGIDO]", mensagem_modificada)
print("Texto final:", mensagem_final)
print("Quantidade de substituições:", total_substituicoes)

Segmentando Strings

Para dividir uma string em múltiplas partes com base em um padrão, empregue re.split. É possível limitar o número de divisões usando o parâmetro maxsplit.

import re

texto = "item1;item2,item3:item4"

delimitador = r"[;,:]"

# Segmenta por qualquer um dos delimitadores
segmentos = re.split(delimitador, texto)
print("Segmentos obtidos:", segmentos)

# Realiza apenas duas divisões
segmentos_limitados = re.split(delimitador, texto, maxsplit=2)
print("Segmentos com divisão restrita:", segmentos_limitados)

Tags: Python re Regex expressões-regular manipulação-texto

Publicado em 6-18 17:31