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
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.")
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()
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)
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)
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)
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)
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']
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']
-
^
(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']
-
$
(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']
-
*
(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']
-
+
(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']
-
?
(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']
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']
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.
Top comments (0)