Desvendando a Sintaxe das Expressões Regulares em Python: Um Guia Completo
Tags: programming, datascience, python, regex
Published: 2023-07-10 23:39:09

As expressões regulares são uma poderosa ferramenta de manipulação de texto em Python, permitindo buscar, extrair e substituir padrões em strings. Compreender a sintaxe das expressões regulares em Python é fundamental para aproveitar todo o potencial dessa ferramenta. Neste artigo, forneceremos um guia completo sobre a sintaxe das expressões regulares em Python, com exemplos simples que facilitarão seu entendimento e aplicação.


## **1 - Importando a biblioteca `re`:**
Antes de começarmos, vamos importar a biblioteca `re` para usar as funcionalidades das expressões regulares.

```python
import re
```

## **2 - Pesquisa de padrões em texto:**
Podemos usar a função `re.search()` para buscar padrões em uma string. Por exemplo, vamos verificar se uma string contém o padrão "python".

```python
import re

texto = "Eu amo programar em Python!"

padrao = "Python"

resultado = re.search(padrao, texto)

if resultado:
    print("Padrão encontrado!")
else:
    print("Padrão não encontrado.")
```

## **3 - Extração de informações com grupos de captura:**
Podemos usar grupos de captura para extrair informações específicas de uma string. Por exemplo, vamos extrair números de telefone de uma lista de contatos.

```python
import re

texto = "Meus contatos: (11) 98765-4321 e (22) 12345-6789"

padrao = r"\((\d+)\) (\d+-\d+)"

resultado = re.findall(padrao, texto)

for telefone in resultado:
    print("Código de Área:", telefone[0])
    print("Número de Telefone:", telefone[1])
    print()
```

## **4 - Substituição de padrões em texto:**
Podemos substituir padrões em uma string usando a função `re.sub()`. Por exemplo, vamos substituir todas as ocorrências de "gato" por "cachorro" em uma frase.

```python
import re

frase = "Eu tenho um gato, e ele é muito fofo!"

padrao = "gato"

novo_texto = re.sub(padrao, "cachorro", frase)

print(novo_texto)
```

## **5 - Filtrando valores com base em padrões:**
No contexto do Pandas, podemos usar o método `str.contains()` junto com expressões regulares para filtrar valores em uma coluna. Por exemplo, vamos filtrar emails que terminam com ".com" em um DataFrame.

```python
import pandas as pd

data = {'Email': ['john@example.com', 'jane@gmail.com', 'mark@example.net']}
df = pd.DataFrame(data)

df_filtered = df[df['Email'].str.contains(r'\.com$')]

print(df_filtered)
```

## **6 - Extração de padrões em uma coluna:**
Podemos usar o método `str.extract()` do Pandas para extrair padrões em uma coluna. Por exemplo, vamos extrair números de uma coluna "Texto".

```python
import pandas as pd

data = {'Texto': ['Texto 123', 'Outro texto 456', 'Mais um texto 789']}
df = pd.DataFrame(data)

df['Numeros'] = df['Texto'].str.extract(r'(\d+)')

print(df)
```

## **7 - Substituição de padrões em uma coluna:**
Para substituir padrões em uma coluna do DataFrame, podemos usar o método `str.replace()`. Por exemplo, vamos substituir "gato" por "cachorro" em uma coluna "Texto".

```python
import pandas as pd

data = {'Texto': ['O gato é fofo', 'A casa é grande', 'O cachorro é brincalhão']}
df = pd.DataFrame(data)

df['Texto'] = df['Texto'].str.replace(r'gato', 'cachorro')

print(df)
```

## **8 - Caracteres Literais:**
Em Python, os caracteres literais correspondem a si mesmos na string de pesquisa. Por exemplo, a expressão regular "python" corresponderá apenas à string "python". Além dos caracteres alfanuméricos, a maioria dos caracteres especiais também é considerada literal, como "_", "-", ".", etc.

Exemplo:
```python
import re

texto = "python é uma linguagem poderosa"

padrao = r"python"

correspondencias = re.findall(padrao, texto)

print(correspondencias)  # Saída: ['python']
```

## **9 - Metacaracteres:**
Em Python, os metacaracteres têm significados especiais em expressões regulares. Aqui estão alguns dos metacaracteres mais comuns:

- `.` (ponto): corresponde a qualquer caractere, exceto quebras de linha.

Exemplo:
```python
import re

texto = "cat, cut, cot"

padrao = r"c.t"

correspondencias = re.findall(padrao, texto)

print(correspondencias)  # Saída: ['cat', 'cut', 'cot']
```

- `^` (circunflexo): corresponde ao início da string ou linha.

Exemplo:
```python
import re

texto = "hello, world! hello there"

padrao = r"^hello"

correspondencias = re.findall(padrao, texto)

print(correspondencias)  # Saída: ['hello']
```

- `$` (cifrão): corresponde ao final da string ou linha.

Exemplo:
```python
import re

texto = "Hello, world! Goodbye, world"

padrao = r"world$"

correspondencias = re.findall(padrao, texto)

print(correspondencias)  # Saída: ['world']
```

- `*` (asterisco): corresponde a zero ou mais ocorrências do caractere ou grupo anterior.

Exemplo:
```python
import re

texto = "gd god good"

padrao = r"go*d"

correspondencias = re.findall(padrao, texto)

print(correspondencias)  # Saída: ['gd', 'god', 'good']
```

- `+` (sinal de adição): corresponde a uma ou mais ocorrências do caractere ou grupo anterior.

Exemplo:
```python
import re

texto = "god good"

padrao = r"go+d"

correspondencias = re.findall(padrao, texto)

print(correspondencias)  # Saída: ['god', 'good']
```

- `?` (interrogação): corresponde a zero ou uma ocorrência do caractere ou grupo anterior.

Exemplo:
```python
import re

texto = "color colour"

padrao = r"colou?r"

correspondencias = re.findall(padrao, texto)

print(correspondencias)  # Saída: ['color', 'colour']
```

## **10 - Classes de Caracteres, Grupos e Alternativas:**
Em Python, as classes de caracteres são definidas entre colchetes `[ ]`, e os grupos são definidos entre parênteses `( )`. As alternativas são usadas para especificar opções diferentes que podem corresponder à expressão regular.

Exemplo:
```python
import re

texto = "cat gat bat rat"

padrao = r"(c|g)at"

correspondencias = re.findall(padrao, texto)

print(correspondencias)  # Saída: ['cat', 'gat']
```

---

Compreender a sintaxe das expressões regulares em Python é essencial para manipular texto de forma eficiente. Através dos exemplos simples apresentados neste artigo, você pode começar a utilizar expressões regulares para buscar, extrair e substituir padrões em suas strings. Com a prática, você poderá explorar recursos mais avançados das expressões regulares em Python e aproveitar ao máximo suas capacidades. Utilize esse conhecimento para aprimorar suas habilidades de manipulação de texto em suas aplicações Python.