Python RegEx: re.match(), re.search(), re.findall() com exemplo

⚡ Resumo Inteligente

Python O tutorial de expressões regulares aborda as funções re.match, re.search, re.findall e re.split por meio de exemplos práticos. LessEste documento explica metacaracteres, classes de caracteres, grupos, sinalizadores, substituição e padrões comuns para análise e validação de texto.

  • 🔤 re Módulo: Importe o pacote `re` para obter as funções `match`, `search`, `findall`, `split`, `sub` e `compile` para tarefas com expressões regulares.
  • 📐 Metacaracteres: Os padrões combinam pontos, asteriscos, sinais de mais, âncoras e classes de caracteres para expressar regras de string flexíveis.
  • 🎯 correspondência vs pesquisa: A função `match` encontra âncoras no início da string, enquanto a busca examina a string inteira em busca da primeira ocorrência.
  • 📋 findall e split: findall retorna todos os valores que não se sobrepõem.ping match; split divide uma string em limites de expressão regular.
  • 🔁 Substituição de sub: A função `re.sub` troca as correspondências por um novo texto ou por uma função de retorno de chamada para transformações de texto avançadas.
  • 🤖 Ajuda com expressões regulares de IA: Assistentes de IA geram e explicam Python Padrões de expressões regulares, reduzindo o tempo de tentativa e erro.

Python Tutorial de RegEx

O que é expressão regular em Python?

A Expressão regular (RE) Em uma linguagem de programação, um `search` é uma sequência de texto especial usada para descrever um padrão de busca. É extremamente útil para, por exemplo, buscas.tracExtraindo informações de textos como código, arquivos, registros, planilhas ou até mesmo documentos.

Ao usar o Python expressão regular, a primeira coisa a reconhecer é que tudo é essencialmente um caractere, e estamos escrevendo padrões para corresponder a uma sequência específica de caracteres, também conhecida como string. Letras Ascii ou latinas são aquelas que estão em seus teclados e Unicode é usado para corresponder ao texto estrangeiro. Inclui dígitos e pontuação e todos os caracteres especiais como $#@!%, etc.

Por exemplo, um Python uma expressão regular poderia dizer a um programa para procurar um texto específico na string e então imprimir o resultado de acordo. A expressão pode incluir

  • Correspondência de texto
  • Repetição
  • Ramificação
  • Composição de padrões etc.

Expressão regular ou RegEx em Python é denotado como RE (REs, regexes ou padrão regex) são importados através módulo re. Python oferece suporte a expressões regulares por meio de bibliotecas. RegEx em Python suporta várias coisas como Modificadores, identificadores e caracteres de espaço em branco.

Identificadores Modificadores Caracteres de espaço em branco Fuga necessária
\d= qualquer número (um dígito) \d representa um dígito.Ex: \d{1,5} irá declarar dígitos entre 1,5 como 424,444,545 etc. \n = nova linha . + * ? []$^(){} | \
\D= qualquer coisa menos um número (um não-dígito) + = corresponde a 1 ou mais \s= espaço
\s = espaço
(guia, espaço, nova linha etc.)
? = corresponde a 0 ou 1 \t = aba
\S= tudo menos um espaço * = 0 ou mais \e = escapar
\w = letras (Corresponde ao caractere alfanumérico, incluindo “_”) $ corresponde ao final de uma string \r = retorno de carro
\W = qualquer coisa, menos letras (Corresponde a um caractere não alfanumérico, excluindo “_”) ^ corresponde ao início de uma string \f= feed de formulário
. = qualquer coisa, menos letras (pontos) | corresponde a ou x/y ------
\b = qualquer caractere exceto nova linha [] = intervalo ou “variância” ------
\. {x} = esta quantidade de código anterior ------

Sintaxe de Expressão Regular (RE)

import re
  • Módulo “re” incluído com Python usado principalmente para pesquisa e manipulação de strings
  • Também usado com frequência para páginas da web “Scraping” (extracgrande quantidade de dados de sites)

Começaremos o tutorial de expressões com este exercício simples usando as expressões (w+) e (^).

Exemplo de expressão w+ e ^

  • “^”: Esta expressão corresponde ao início de uma string
  • “C+“: Esta expressão corresponde ao caractere alfanumérico da string

Aqui veremos um Python RegEx Exemplo de como podemos usar as expressões w+ e ^ em nosso código. Cobrimos a função re.findall() em Python, mais adiante neste tutorial, mas por enquanto nos concentraremos apenas nas expressões \w+ e \^.

Por exemplo, para nossa string “guru99, a educação é divertida” se executarmos o código com w+ e^, a saída será “guru99”.

Exemplo de expressão w+ e ^

import re
xx = "guru99,education ">is fun"
r1 = re.findall(r"^\w+",xx)
print(r1)

Lembre-se, se você remover o sinal + do w+, a saída mudará e fornecerá apenas o primeiro caractere da primeira letra, ou seja, [g]

Exemplo de expressão \s na função re.split

  • “s”: Esta expressão é usada para criar um espaço na string

Para entender como esse RegEx funciona Python funciona, começamos com um simples Python RegEx Exemplo de uma função de divisão. No exemplo, dividimos cada palavra usando a função “re.split” e ao mesmo tempo usamos a expressão \s que permite analisar cada palavra da string separadamente.

\s expressão na função re.split

Quando você executa este código, você obtém a saída ['nós', 'somos', 'divisão', 'o', 'palavras'].

Agora, vamos ver o que acontece se você remover “\” de s. Não há alfabeto 's' na saída, isso ocorre porque removemos '\' da string e ele avalia “s” como um caractere regular e, portanto, divide as palavras sempre que encontra “s” na string.

\s expressão na função re.split

Da mesma forma, há uma série de outros Python expressão regular que você pode usar de várias maneiras em Python como \d,\D,$,\.,\b, etc.

Aqui está o código completo

import re
xx = "guru99,education ">is fun"
r1 = re.findall(r"^\w+", xx)
print((re.split(r'\s','we are splitting the words')))
print((re.split(r's','split the words')))

A seguir, veremos os tipos de métodos que são usados ​​com expressões regulares em Python.

Usando métodos de expressão regular

O pacote “re” fornece vários métodos para realmente realizar consultas em uma string de entrada. Veremos os métodos de re em Python:

  • revanche()
  • pesquisa()
  • re.encontrar()

Observação: Com base nas expressões regulares, Python oferece duas operações primitivas diferentes. O método match verifica se há uma correspondência apenas no início da string, enquanto search verifica se há uma correspondência em qualquer lugar da string.

revanche()

revanche() função de re em Python irá pesquisar o padrão de expressão regular e retornar a primeira ocorrência. O Python O método RegEx Match verifica uma correspondência apenas no início da string. Portanto, se uma correspondência for encontrada na primeira linha, ele retornará o objeto match. Mas se uma correspondência for encontrada em alguma outra linha, o Python A função RegEx Match retorna nulo.

Por exemplo, considere o seguinte código de Python função re.match(). As expressões “w+” e “\W” corresponderão às palavras que começam com a letra 'g' e, a partir daí, tudo o que não for iniciado com 'g' não será identificado. Para verificar a correspondência de cada elemento na lista ou string, executamos o forloop neste Python re.match() Exemplo.

revanche()

re.search(): Encontrando padrão no texto

pesquisa() A função pesquisará o padrão de expressão regular e retornará a primeira ocorrência. Diferente Python re.match(), ele verificará todas as linhas da string de entrada. O Python A função re.search() retorna um objeto de correspondência quando o padrão é encontrado e “nulo” se o padrão não for encontrado

Como usar a pesquisa()?

Para usar a função search(), você precisa importar Python re módulo primeiro e depois execute o código. O Python A função re.search() pega o “padrão” e o “texto” para digitalizar a partir de nossa string principal

usar pesquisa()

Por exemplo, aqui procuramos duas strings literais “Teste de software” “guru99”, em uma string de texto “Software Testes é divertido”. Para “teste de software” encontramos a correspondência, portanto, ele retorna a saída de Python re.search() Exemplo como “encontrou uma correspondência”, enquanto para a palavra “guru99” não foi possível encontrar na string, portanto, ela retorna a saída como “Sem correspondência”.

re.encontrar()

encontrar tudo() O módulo é usado para buscar todas as ocorrências que correspondem a um determinado padrão. Em contraste, o módulo `search()` retornará apenas a primeira ocorrência que corresponde ao padrão especificado. `findall()` percorrerá todas as linhas do arquivo e retornará todas as ocorrências não sobrepostas.ping Correspondências de padrões em uma única etapa.

Como usar re.findall() em Python?

Aqui temos uma lista de endereços de e-mail e queremos que todos os endereços de e-mail sejam obtidos da lista. Usamos o método re.findall() em Python. Ele encontrará todos os endereços de e-mail da lista.

 Use re.findall() em Python

Aqui está o código completo para exemplo de re.findall()

import re

list = ["guru99 get", "guru99 give", "guru Selenium"]
for element in list:
    z = re.match("(g\w+)\W(g\w+)", element)
if z:
    print((z.groups()))
    
patterns = ['software testing', 'guru99']
text = 'software testing is fun?'
for pattern in patterns:
    print('Looking for "%s" in "%s" ->' % (pattern, text), end=' ')
    if re.search(pattern, text):
        print('found a match!')
else:
    print('no match')
abc = 'guru99@google.com, careerguru99@hotmail.com, users@yahoomail.com'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
    print(email)

Python Bandeiras

Muitos Python Os métodos Regex e as funções Regex recebem um argumento opcional chamado Flags. Esses sinalizadores podem modificar o significado do dado Python Padrão Regex. Para entendê-los, veremos um ou dois exemplos dessas bandeiras.

Várias bandeiras usadas em Python inclui

Sintaxe para sinalizadores Regex O que esta bandeira faz
[re.M] Faça o início/fim considerar cada linha
[re.I] Ignora o caso
[re.S] Fazer [ . ]
[re.U] Faça { \w,\W,\b,\B} segue as regras Unicode
[re.L] Faça {\w,\W,\b,\B} seguir a localidade
[re.X] Permitir comentário em Regex

Exemplo de sinalizadores re.M ou multilinha

Em multilinha, o caractere padrão [^] corresponde ao primeiro caractere da string e ao início de cada linha (seguindo imediatamente após cada nova linha). Enquanto a expressão “w” pequeno é usada para marcar o espaço com caracteres. Quando você executa o código, a primeira variável “k1” imprime apenas o caractere 'g' para a palavra guru99, enquanto que quando você adiciona o sinalizador multilinha, ela busca os primeiros caracteres de todos os elementos da string.

Exemplo de sinalizadores re.M ou multilinha

Aqui está o código

import re
xx = """guru99 
careerguru99	
selenium"""
k1 = re.findall(r"^\w", xx)
k2 = re.findall(r"^\w", xx, re.MULTILINE)
print(k1)
print(k2)
  • Declaramos a variável xx para string ”guru99…. carreiraguru99….selênio”
  • Execute o código sem usar flags multiline, ele fornece a saída apenas 'g' das linhas
  • Execute o código com flag “multiline”, quando você imprime 'k2' ele dá a saída como 'g', 'c' e 's'
  • Portanto, podemos ver a diferença antes e depois de adicionar multilinhas no exemplo acima.

Da mesma forma, você também pode usar outros Python sinalizadores como re.U (Unicode), re.L (seguir localidade), re.X (permitir comentário), etc.

Python 2 Exemplo

Os códigos acima são Python 3 exemplos, se você quiser correr Python 2 considere o seguinte código.

# Example of w+ and ^ Expression
import re
xx = "guru99,education ">is fun"
r1 = re.findall(r"^\w+",xx)
print r1

# Example of \s expression in re.split function
import re
xx = "guru99,education ">is fun"
r1 = re.findall(r"^\w+", xx)
print (re.split(r'\s','we are splitting the words'))
print (re.split(r's','split the words'))

# Using re.findall for text
import re

list = ["guru99 get", "guru99 give", "guru Selenium"]
for element in list:
    z = re.match("(g\w+)\W(g\w+)", element)
if z:
    print(z.groups())
    
patterns = ['software testing', 'guru99']
text = 'software testing is fun?'
for pattern in patterns:
    print 'Looking for "%s" in "%s" ->' % (pattern, text),
    if re.search(pattern, text):
        print 'found a match!'
else:
    print 'no match'
abc = 'guru99@google.com, careerguru99@hotmail.com, users@yahoomail.com'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
    print email

# Example of re.M or Multiline Flags
import re
xx = """guru99 
careerguru99	
selenium"""
k1 = re.findall(r"^\w", xx)
k2 = re.findall(r"^\w", xx, re.MULTILINE)
print k1
print k2

Teste o seu Python Recursos Educacionais

1. Qual método é usado para encontrar todas as ocorrências de um padrão em uma string?

  • pesquisa()
  • revanche()
  • re.encontrar()
  • re.split()
re.findall() é usado para encontrar todas as ocorrências de um padrão em uma string.

2. O que a classe de caracteres \d representa em expressões regulares?

  • Qualquer dígito (0-9)
  • Qualquer caractere não-dígito
  • Qualquer caractere de espaço em branco
  • Qualquer letra ou número
\d representa qualquer dígito (0-9).

3. Qual função você usaria para dividir uma string com base em espaços?

  • re.split(r'\s', string)
  • re.findall(r'\w+', string)
  • re.match(r'\s+', sequência de caracteres)
  • re.split(r'\w+', string)
re.split(r'\s', string) divide uma string com base em espaços usando a expressão \s.

4. Qual é a principal diferença entre re.match() e re.search()?

  • re.match() procura um padrão no início de uma string, enquanto re.search() procura um padrão em qualquer lugar da string.
  • re.match() retorna todas as correspondências, enquanto re.search() retorna a primeira correspondência.
  • re.search() é mais rápido que re.match().
  • Ambas as funções se comportam da mesma maneira.
re.match() procura um padrão no início de uma string, enquanto re.search() procura um padrão em qualquer lugar da string.

Perguntas Frequentes

`re.match` retorna um objeto `match` somente quando o padrão corresponde no início da string. `re.search` examina a string inteira e retorna a primeira correspondência em qualquer lugar.

Sim. Ferramentas de IA como ChatGPT, Copilot e assistentes específicos para expressões regulares geram padrões a partir de linguagem natural, explicam as capturas e traduzem expressões regulares entre idiomas, além de sinalizar erros comuns.

As ferramentas de IA destacam cada metacaractere, simulam correspondências passo a passo e sugerem correções. Elas identificam problemas com quantificadores gananciosos, escapes ausentes e recomendam lookaheads quando necessário.

Use `re.split(pattern, string)`. Ele retorna uma lista de substrings entre as ocorrências. O padrão pode capturar delimitadores em grupos e incluir os delimitadores capturados no resultado.

Chame re.sub(padrão, substituição, string). A substituição pode ser uma string literal com referências anteriores, como \\1, ou uma função que retorna um texto calculado a partir de cada objeto de correspondência.

Os parâmetros modificam o comportamento do padrão. re.IGNORECASE considera letras maiúsculas e minúsculas de forma intercambiável. re.MULTILINE Faz com que ^ e $ correspondam aos limites de linha em vez de apenas aos limites de string.

Sim. Dor nas costas catastróficatracO uso excessivo de quantificadores aninhados pode travar o interpretador. Evite padrões como (a+)+, prefira grupos atômicos quando disponíveis e limite o tamanho da entrada antes da avaliação da expressão regular.

`re.compile` retorna um objeto de padrão compilado. Reutilizar o mesmo padrão em várias strings é mais rápido porque a compilação é executada apenas uma vez. Isso também torna o uso de expressões regulares mais claro no código.

Resuma esta postagem com: