O módulo re
fornece várias funções para trabalhar com expressões regulares. As mais comuns são:
re.search(padrao, string)
: Procura a primeira ocorrência do padrão em qualquer lugar da string. Retorna um objeto Match
se encontrado, None
caso contrário.re.match(padrao, string)
: Procura o padrão apenas no início da string. Retorna um objeto Match
se encontrado, None
caso contrário.re.findall(padrao, string)
: Encontra todas as ocorrências não sobrepostas do padrão na string e retorna uma lista de strings que correspondem.re.sub(padrao, substituicao, string)
: Substitui todas as ocorrências do padrão na string pela substituicao
.re.compile(padrao)
: Compila um padrão de regex em um objeto de expressão regular. Útil quando você vai usar o mesmo padrão muitas vezes, pois otimiza a performance.re
:import re
texto = "Meu e-mail é [email protected] e o telefone é (11) 98765-4321."
# 1. re.search: Encontrar o primeiro e-mail
padrao_email = r'\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b'
match = re.search(padrao_email, texto)
if match:
print(f"E-mail encontrado (search): {match.group(0)}") # .group(0) retorna a string completa que combinou
# Saída: E-mail encontrado (search): [email protected]
# 2. re.findall: Encontrar todos os números
padrao_numeros = r'\\d+' # Um ou mais dígitos
todos_numeros = re.findall(padrao_numeros, texto)
print(f"Todos os números encontrados (findall): {todos_numeros}")
# Saída: Todos os números encontrados (findall): ['11', '98765', '4321']
# 3. re.sub: Substituir números de telefone por [TELEFONE OCULTO]
# Padrão para telefone: (XX) XXXXX-XXXX
padrao_telefone = r'\\(\\d{2}\\) \\d{5}-\\d{4}'
texto_modificado = re.sub(padrao_telefone, '[TELEFONE OCULTO]', texto)
print(f"Texto com telefone oculto (sub): {texto_modificado}")
# Saída: Texto com telefone oculto (sub): Meu e-mail é [email protected] e o telefone é [TELEFONE OCULTO].
# 4. re.compile: Compilar um padrão para uso repetido
padrao_compilado = re.compile(r'Python')
texto2 = "Aprender Python é legal. Python é versátil."
matches_compilado = padrao_compilado.findall(texto2)
print(f"Matches com padrão compilado: {matches_compilado}")
# Saída: Matches com padrão compilado: ['Python', 'Python']
Nota sobre r''
(Raw String):
É uma boa prática usar r''
(string bruta ou raw string) para definir padrões de regex em Python. Isso impede que as barras invertidas (\\
) sejam interpretadas como caracteres de escape da string Python normal, o que é crucial, pois as regex usam muitas barras invertidas para sequências especiais (\\d
, \\s
, etc.).