Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> python

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

O que é expressão regular em Python?


Uma Expressão Regular (RE) em uma linguagem de programação é uma string de texto especial usada para descrever um padrão de pesquisa. É extremamente útil para extrair informações de textos como códigos, arquivos, logs, planilhas ou até mesmo documentos.

Ao usar a expressão regular do Python, a primeira coisa é 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. As letras ASCII ou latinas são aquelas que estão em seus teclados e o Unicode é usado para corresponder ao texto estrangeiro. Inclui dígitos e pontuação e todos os caracteres especiais como $#@!%, etc.

Neste tutorial Python RegEx, vamos aprender-

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

Expressão regular ou RegEx em Python é indicada como RE (REs, regexes ou padrão regex) são importados através do módulo re . Python suporta expressão regular 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 Escape obrigatório
\d=qualquer número (um dígito) \d representa um dígito. Ex:\d{1,5} declarará um dígito 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
(tab, espaço, nova linha etc.)
? =corresponde a 0 ou 1 \t =guia
\S=qualquer coisa menos um espaço * =0 ou mais \e =escape
\w =letras ( Corresponder 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 para nova linha [] =intervalo ou “variância” —————-
\. {x} =esta quantidade de código anterior —————–

Sintaxe de Expressão Regular(RE)

import re

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

Exemplo de expressão w+ e ^


Aqui veremos um exemplo de Python RegEx de como podemos usar a expressão w+ e ^ em nosso código. Cobrimos a função re.findall() em Python, mais adiante neste tutorial, mas por um tempo nós simplesmente focamos na expressão \w+ e \^.

Por exemplo, para nossa string “guru99, education is fun” se executarmos o código com w+ e^, ele dará a saída “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 será alterada e fornecerá apenas o primeiro caractere da primeira letra, ou seja, [g]

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


Para entender como esse RegEx em Python funciona, começamos com um exemplo simples de Python RegEx 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 na string separadamente.



Quando você executar este código, ele lhe dará a saída [‘nós’, ‘somos’, ‘dividir’, ‘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 ela avalia "s" como um caractere regular e, portanto, divide as palavras onde quer que encontre "s" na string.



Da mesma forma, há uma série de outras expressões regulares do Python que você pode usar de várias maneiras no 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 usados ​​com expressão regular 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:

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

re.match()


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

Por exemplo, considere o seguinte código da função re.match() do Python. A expressão “w+” e “\W” corresponderá às palavras iniciadas com a letra ‘g’ e, a partir daí, qualquer coisa que não seja iniciada com ‘g’ não será identificada. Para verificar a correspondência de cada elemento na lista ou string, executamos o forloop neste exemplo re.match() do Python.


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


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

Como usar a pesquisa()?


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



Por exemplo, aqui procuramos duas strings literais “Software testing” “guru99”, em uma string de texto “Software Testing is fun”. Para “teste de software”, encontramos a correspondência, portanto, ele retorna a saída do exemplo Python re.search() como “encontrado uma correspondência”, enquanto para a palavra “guru99” não foi possível encontrar a string, portanto, ela retorna a saída como “Sem correspondência ”.

re.findall()


findall() O módulo é usado para procurar “todas” as ocorrências que correspondem a um determinado padrão. Por outro lado, o módulo search() retornará apenas a primeira ocorrência que corresponde ao padrão especificado. findall() irá iterar em todas as linhas do arquivo e retornará todas as correspondências não sobrepostas do padrão 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 = '[email protected], [email protected], [email protected]'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
    print(email)

Sinalizadores Python


Muitos métodos Python Regex e funções Regex recebem um argumento opcional chamado Flags. Esses sinalizadores podem modificar o significado do padrão Python Regex fornecido. Para entender isso, veremos um ou dois exemplos desses sinalizadores.

Vários sinalizadores usados ​​em Python incluem
Sintaxe para sinalizadores Regex O que esse sinalizador faz
[re.M] Faça o início/fim considerar cada linha
[re.I] Ignora maiúsculas
[re.S] Faça [. ]
[re.U] Faça { \w,\W,\b,\B} seguir as regras Unicode
[re.L] Faça {\w,\W,\b,\B} seguir a localidade
[re.X] Permitir comentários em Regex

Exemplo de sinalizadores re.M ou Multiline


Em várias linhas, 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 quando você adiciona o sinalizador de várias linhas, ele 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)

Da mesma forma, você também pode usar outros sinalizadores do Python como re.U (Unicode), re.L (Follow locale), re.X (Allow Comment), etc.

Exemplo do Python 2


Os códigos acima são exemplos do Python 3, se você deseja executar no 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 = '[email protected], [email protected], [email protected]'
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

Resumo


Uma expressão regular em uma linguagem de programação é uma string de texto especial usada para descrever um padrão de pesquisa. Inclui dígitos e pontuação e todos os caracteres especiais como $#@!%, etc. A expressão pode incluir literal

Em Python, uma expressão regular é denotada como RE (REs, regexes ou padrão regex) são incorporadas através do módulo re do Python.

python

  1. Função Python String strip () com EXEMPLO
  2. Python String count() com EXEMPLOS
  3. Python String format() Explique com EXEMPLOS
  4. Comprimento da string do Python | Exemplo do método len()
  5. Método Python String find() com exemplos
  6. Função Python round() com EXEMPLOS
  7. Função Python map() com EXEMPLOS
  8. Python Timeit() com exemplos
  9. Contador Python em coleções com exemplo
  10. Python List count() com EXEMPLOS