DEV Community

Francisco Júnior
Francisco Júnior

Posted on • Edited on

2

Desvendando a Sintaxe das Expressões Regulares em Python: Um Guia Completo

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.

import re
Enter fullscreen mode Exit fullscreen mode

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".

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.")
Enter fullscreen mode Exit fullscreen mode

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.

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()
Enter fullscreen mode Exit fullscreen mode

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.

import re

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

padrao = "gato"

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

print(novo_texto)
Enter fullscreen mode Exit fullscreen mode

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.

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)
Enter fullscreen mode Exit fullscreen mode

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".

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)
Enter fullscreen mode Exit fullscreen mode

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".

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)
Enter fullscreen mode Exit fullscreen mode

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:

import re

texto = "python é uma linguagem poderosa"

padrao = r"python"

correspondencias = re.findall(padrao, texto)

print(correspondencias)  # Saída: ['python']
Enter fullscreen mode Exit fullscreen mode

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:

import re

texto = "cat, cut, cot"

padrao = r"c.t"

correspondencias = re.findall(padrao, texto)

print(correspondencias)  # Saída: ['cat', 'cut', 'cot']
Enter fullscreen mode Exit fullscreen mode
  • ^ (circunflexo): corresponde ao início da string ou linha.

Exemplo:

import re

texto = "hello, world! hello there"

padrao = r"^hello"

correspondencias = re.findall(padrao, texto)

print(correspondencias)  # Saída: ['hello']
Enter fullscreen mode Exit fullscreen mode
  • $ (cifrão): corresponde ao final da string ou linha.

Exemplo:

import re

texto = "Hello, world! Goodbye, world"

padrao = r"world$"

correspondencias = re.findall(padrao, texto)

print(correspondencias)  # Saída: ['world']
Enter fullscreen mode Exit fullscreen mode
  • * (asterisco): corresponde a zero ou mais ocorrências do caractere ou grupo anterior.

Exemplo:

import re

texto = "gd god good"

padrao = r"go*d"

correspondencias = re.findall(padrao, texto)

print(correspondencias)  # Saída: ['gd', 'god', 'good']
Enter fullscreen mode Exit fullscreen mode
  • + (sinal de adição): corresponde a uma ou mais ocorrências do caractere ou grupo anterior.

Exemplo:

import re

texto = "god good"

padrao = r"go+d"

correspondencias = re.findall(padrao, texto)

print(correspondencias)  # Saída: ['god', 'good']
Enter fullscreen mode Exit fullscreen mode
  • ? (interrogação): corresponde a zero ou uma ocorrência do caractere ou grupo anterior.

Exemplo:

import re

texto = "color colour"

padrao = r"colou?r"

correspondencias = re.findall(padrao, texto)

print(correspondencias)  # Saída: ['color', 'colour']
Enter fullscreen mode Exit fullscreen mode

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:

import re

texto = "cat gat bat rat"

padrao = r"(c|g)at"

correspondencias = re.findall(padrao, texto)

print(correspondencias)  # Saída: ['cat', 'gat']
Enter fullscreen mode Exit fullscreen mode

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.

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more