Python: Guia sobre Expressões Regulares

As expressões regulares, ou regex, constituem uma ferramenta extremamente versátil e poderosa em programação, especialmente útil para a manipulação de strings. Em Python, a biblioteca re é o coração dessa funcionalidade, permitindo aos desenvolvedores realizar buscas complexas, substituições e outras operações de texto com simplicidade e eficiência. Este artigo aborda os fundamentos das expressões regulares em Python, desde a sintaxe básica até exemplos práticos de uso.

Introdução às Expressões Regulares em Python

Uma expressão regular é uma sequência de caracteres que forma um padrão de busca. Esse padrão é utilizado para verificar a presença de sequências de caracteres dentro de uma string, oferecendo uma maneira flexível e eficiente de analisar textos. As aplicações de regex variam desde a validação de formatos de dados (como emails e números de telefone) até a extração de informações específicas de grandes volumes de texto.

A Biblioteca re em Python

Para utilizar expressões regulares em Python, primeiro, é necessário importar a biblioteca re, utilizando o comando import re. Esta biblioteca inclui várias funções que facilitam a aplicação de expressões regulares em strings.

Principais Funções da Biblioteca re

re.search(pattern, string): Procura pela primeira ocorrência de um padrão dentro de uma string. Retorna um objeto Match se encontra uma correspondência; caso contrário, retorna None.

re.match(pattern, string): Similar a search, mas busca o padrão apenas no início da string.

re.findall(pattern, string): Retorna uma lista contendo todas as ocorrências não sobrepostas de um padrão dentro de uma string.

re.sub(pattern, repl, string): Substitui as ocorrências do padrão na string pelo texto de substituição repl.

Sintaxe das Expressões Regulares em Python

A sintaxe de uma expressão regular pode parecer complexa à primeira vista, mas segue regras claras:

Caracteres Literais: São utilizados para buscar a correspondência exata de caracteres específicos. Por exemplo, a regex a corresponderá à letra "a" em uma string.

. (Ponto): Corresponde a qualquer caractere único, exceto novas linhas.

^ e $: Respectivamente, correspondem ao início e ao fim de uma string. ^a corresponde a qualquer string que comece com "a".

[...] e [^...]: O primeiro corresponde a qualquer caractere dentro dos colchetes; o segundo, a qualquer caractere não listado entre eles.

| (Pipe): Funciona como um operador OR, buscando a correspondência de qualquer expressão à esquerda ou à direita do pipe.

Quantificadores: * (0 ou mais), + (1 ou mais), ? (0 ou 1), {n}, {n,}, {n,m} controlam quantas vezes um elemento pode ocorrer.

Exemplos Práticos na Linguagem Python

Validando Números de Telefone

Vamos começar com um exemplo simples: a validação de um número de telefone no formato 123-456-7890.

import re

telefone = "Meu número é 123-456-7890."
padrao = r"\d{3}-\d{3}-\d{4}"
resultado = re.search(padrao, telefone)

if resultado:
    print("Número válido encontrado:", resultado.group())
else:
    print("Formato inválido.")

Neste código, \d{3}-\d{3}-\d{4} é o padrão que define o formato do número de telefone, onde \d representa um dígito numérico e {n} especifica a quantidade exata de vezes que o dígito deve aparecer.

Para melhor entendimento sobre o uso de estruturas condicionais recomendo a leitura desse artigo:

Python: Entendendo if, elif e else
A capacidade de tomar decisões é fundamental não apenas para os seres humanos, mas também para os programas de computador. No Python, as estruturas condicionais if, elif e else permitem que os programas tomem decisões, executando diferentes blocos de código com base em determinadas condições. Este a…

Buscando e Substituindo E-mails

Consideremos agora um exemplo que busca e substitui todos os endereços de e-mail em um dado texto por <e-mail ocultado>.

texto = "Para mais informações, contate info@exemplo.com ou suporte@exemplo.com."
padrao = r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b"
substituido = re.sub(padrao,

 "<e-mail ocultado>", texto)

print(substituido)

Aqui, utilizamos uma expressão regular um pouco mais complexa para combinar com endereços de e-mail e a função re.sub para substituir as correspondências encontradas.

As expressões regulares oferecem uma forma poderosa e flexível de trabalhar com texto em Python. Dominar o uso da biblioteca re e entender a sintaxe de regex pode significativamente aumentar a eficiência de suas operações de manipulação de string. Embora possa parecer desafiador no início, a prática levará a uma compreensão profunda e à capacidade de resolver problemas complexos de processamento de texto com facilidade.