Expressões regulares em Python simplificadas

Expressões regulares (regex) são ferramentas poderosas usadas para combinar e manipular strings com base em padrões. Em Python, o módulo re fornece suporte para expressões regulares, permitindo que você execute operações complexas de strings de forma eficiente. Este artigo apresentará a você os conceitos básicos de expressões regulares e mostrará como usá-las efetivamente em Python.

Introdução ao módulo re

Para usar expressões regulares em Python, você precisa importar o módulo re. Este módulo fornece várias funções para trabalhar com padrões regex:

  • re.match() - Verifica se há correspondência somente no início da string.
  • re.search() - Pesquisa uma correspondência em toda a string.
  • re.findall() - Encontra todas as correspondências na string e as retorna como uma lista.
  • re.sub() - Substitui correspondências na string por uma substituição especificada.

Correspondência de padrões básicos

Expressões regulares usam caracteres especiais para definir padrões de pesquisa. Aqui estão alguns padrões básicos:

  • . - Corresponde a qualquer caractere único, exceto nova linha.
  • \d - Corresponde a qualquer dígito (equivalente a [0-9]).
  • \w - Corresponde a qualquer caractere alfanumérico (equivalente a [a-zA-Z0-9_]).
  • \s ​​- Corresponde a qualquer caractere de espaço em branco.
  • ^ - Corresponde ao início da string.
  • $ - Corresponde ao final da string.

Exemplos

Aqui estão alguns exemplos que demonstram a correspondência básica de padrões:

import re

# Match a pattern at the beginning of a string
result = re.match(r'Hello', 'Hello, World!')
print(result.group())  # Output: Hello

# Search for a pattern in the entire string
result = re.search(r'\d+', 'There are 24 hours in a day.')
print(result.group())  # Output: 24

Usando expressões regulares com grupos

Grupos são usados ​​para capturar partes do texto correspondente. Eles são definidos usando parênteses. Por exemplo, para extrair partes específicas de um padrão, você pode usar grupos:

pattern = r'(\d{3})-(\d{2})-(\d{4})'
text = 'My number is 123-45-6789.'

# Find all matches with groups
match = re.search(pattern, text)
if match:
    print(f'Area Code: {match.group(1)}')  # Output: 123
    print(f'Prefix: {match.group(2)}')     # Output: 45
    print(f'Suffix: {match.group(3)}')     # Output: 6789

Usando caracteres especiais

Expressões regulares incluem vários caracteres especiais para correspondência de padrões mais complexos:

  • * - Corresponde a 0 ou mais ocorrências do elemento anterior.
  • + - Corresponde a 1 ou mais ocorrências do elemento anterior.
  • ? - Corresponde a 0 ou 1 ocorrência do elemento anterior.
  • {n} - Corresponde exatamente a n ocorrências do elemento anterior.
  • | - Corresponde ao padrão anterior ou posterior.

Exemplos

Aqui estão alguns exemplos usando caracteres especiais:

# Match a pattern with 0 or more occurrences
result = re.findall(r'\d*', '123 abc 456')
print(result)  # Output: ['123', '', '', '456']

# Match a pattern with 1 or more occurrences
result = re.findall(r'\d+', 'There are 24 apples and 3 oranges.')
print(result)  # Output: ['24', '3']

Substituindo texto por expressões regulares

A função re.sub() é usada para substituir partes da string que correspondem a um padrão:

text = 'The rain in Spain falls mainly in the plain.'

# Replace 'Spain' with 'France'
new_text = re.sub(r'Spain', 'France', text)
print(new_text)  # Output: The rain in France falls mainly in the plain.

Conclusão

Expressões regulares são uma ferramenta poderosa para correspondência de padrões e manipulação de texto em Python. Com o módulo re, você pode pesquisar, corresponder e substituir texto com base em padrões complexos. Ao entender a sintaxe básica e os caracteres especiais, você pode aproveitar expressões regulares para lidar com uma ampla gama de tarefas de processamento de texto de forma eficaz.