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.
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”.
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.
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.
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.
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
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.
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.
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()
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
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)
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.








