Neste tópico, aprenderemos expressões regulares do Python.
Definição: Expressões regulares, às vezes chamadas de re ou regex ou regexp, são sequências de caracteres para corresponder aos padrões em texto/string. O Python tem um módulo de RE embutido para executar isso.
Os usos comuns de uma expressão regular são:
- Pesquise uma string (pesquise e encontre)
- Encontre toda a string correspondente (Findall)
- Split String na substring (divisão)
- Substitua parte de uma string (sub)
Uma expressão regular é uma combinação de alfabetos, metacharacters. Então, os seguintes metacaracters estão disponíveis.
- \ Isso é usado para soltar/ignorar o significado especial do caráter
- [] Isso indica uma classe de caracteres ex: [a-z], [a-za-z0-9]
- ^ Isso corresponde ao início do texto
- $ Isso corresponde ao fim do texto
- . Isso corresponde a qualquer personagem, exceto a nova linha
- ? Combinar zero ou uma ocorrência.
- | Significa ou (combine com qualquer um dos personagens separados por ele.
- * Qualquer número de ocorrências (incluindo 0 ocorrências)
- + Uma ou mais ocorrências
- Indica várias ocorrências de um re anterior para combinar.
- () Inclua um grupo de regexp
Se usarmos a barragem '\', indica várias sequências. Eu quero usar barra de barro sem o seu significado especial '\\'.
- \ D corresponde a qualquer dígito decimal, é o mesmo que a classe Set [0-9]
- \ D corresponde a qualquer caractere não dígito
- \ s corresponde a qualquer caractere em branco.
- \ S corresponde a qualquer caractere não-branco
- \ w corresponde a qualquer caráter alfanumérico; É o mesmo que uma classe [A-ZA-Z0-9_].
- \ W corresponde a qualquer caráter não alfanumérico.
O método a seguir disponível no módulo RE:
re.procurar() :
Este método retorna a parte correspondente da string e para após a primeira partida. Portanto, isso pode ser usado para testar uma expressão em vez de extrair dados.
Sintaxe: re.Pesquisar (padrão, string)
Valor de retorno:
Nenhum : O padrão não corresponde
Corda : padrão correspondente
Ex: Neste exemplo, pesquisará o mês e a data
importar re
regexp = r "([a-za-z]+) (\ d+)"
Match = re.Pesquisar (Regexp, "My Son Birthday é em 20 de julho")
se corresponder != Nenhum:
print ("corresponda ao índice %s, %s" %(correspondência.start (), combinar.end ())))#Isso fornece índice de string correspondente
impressão ("correspondência completa: % s" % (correspondência.Grupo (0))))
print ("mês: % s" % (correspondência.grupo 1)))
print ("dia: % s" % (correspondência.grupo (2)))
outro:
print ("O padrão regex fornecido não corresponde")
ré.corresponder() :
Este método procura e retorna a primeira partida. Isso verifica a partida apenas no início da string.
Sintaxe: re.Match (padrão, string)
Valor de retorno:
Nenhum: o padrão não corresponde
String: padrão correspondente
Ex: este exemplo para mostrar o início do padrão de string correspondente
importar re
regexp = r "([a-za-z]+) (\ d+)"
Match = re.Match (regexp, "20 de julho")
Se corresponde == Nenhum:
print ("Não é uma data válida")
outro:
print ("dado string: % s" % (correspondência.grupo()))
print ("mês: % s" % (correspondência.grupo 1)))
print ("dia: % s" % (correspondência.grupo (2)))
Ex: para mostrar o padrão não correspondido no começo
importar re
Match = re.Match (Regexp, "My Son Birthday é em 20 de julho")
Se corresponde == Nenhum:
print ("Não é uma data válida")
outro:
print ("dado string: % s" % (correspondência.grupo()))
print ("mês: % s" % (correspondência.grupo 1)))
print ("dia: % s" % (correspondência.grupo (2)))
ré.encontrar tudo() :
Este método retorna todas as correspondências de padrão em uma string. A string é pesquisada do início ao fim e as correspondências são devolvidas na ordem encontrada.
Sintaxe : re.Findall (padrão, string)
Valor de retorno
String vazia ([)]: o padrão não corresponde
Lista de string: padrão correspondente
Ex: Expressão regular para encontrar dígitos
importar re
String = "" "Bangalore Pincode é 560066 e
Gulbarga Pincode é 585101 "" "
regexp = '\ d+'
Match = re.Findall (regexp, string)
Imprimir (correspondência)
Ex: Encontre o número do celular (número exato de 10 dígitos) do texto determinado
importar re
String = "" "Office Bangalore número 1234567891,
Meu número é 8884278690, contato de emergência 3456789123
número inválido 898883456 "" "
regexp = '\ d 10'#esta expressão regular para corresponder ao número exato de 10 dígitos
Match = re.Findall (regexp, string)
Imprimir (correspondência)
ré.compilar():
Expressões regulares são compiladas em objetos de padrões e podem ser usadas nos métodos. Exemplo de busca por correspondências de padrões, substituições de string.
Ex:
importar re
e = re.compilação ('[a-e]')
impressão (e.Findall ("nasci aos 11 a.M. em 20 de julho de 1989 "))
e = re.Compile ('\ d') # \ d é equivalente a [0-9].
impressão (e.Findall ("nasci aos 11 a.M. em 20 de julho de 1989 "))
p = re.Compile ('\ d+')#Grupo de um ou mais dígitos
impressão (p.Findall ("nasci aos 11 a.M. em 20 de julho de 1989 "))
ré.dividir():
String dividida com base nas ocorrências de um padrão. Se encontrado padrão, os caracteres restantes da string são retornados como parte da lista resultante. Podemos especificar a divisão máxima para uma determinada string.
Sintaxe - ré.dividir (padrão, string, maxsplit = 0)
Valores de retorno:
Lista vazia ([]): o padrão não corresponde
Lista de string: padrão correspondente
Ex:
importar re
# '\ W+' corresponde a caracteres não alfanuméricos ou grupo de caracteres
# se dividi ao encontrar '' ou WhiteSpace "
impressão (re.dividir ('\ w+', 'bom, melhor, melhor')))
impressão (re.Split ('\ w+', "livros de livros do livro"))))
# Aqui ':', ", ',' não são alfanuméricos onde a divisão ocorre
impressão (re.Split ('\ w+', 'nascido em 20 de julho de 1989, às 11:00')))
# '\ d+' denota caracteres numéricos ou grupo de caracteres
# Dividindo ocorre em '20', '1989', '11', '00'
impressão (re.Split ('\ d+', 'nascido em 20 de julho de 1989, às 11:00')))
# O máximo especificado dividido como 1
impressão (re.Split ('\ d+', 'nascido em 20 de julho de 1989, às 11:00
Am ', maxsplit = 1))
ré.sub():
Aqui o 'sub' significado é uma substring. Nesta função, a expressão regular fornecida (parâmetro padrão) é correspondente na sequência fornecida (parâmetro string); Se a substring for encontrada, ela será substituída por um parâmetro REPL.
Aqui na contagem, especifique o número de vezes que o regex é substituído.
Aqui podemos especificar a bandeira regex (ex: re. IGNORAR CASO)
Sintaxe:- re.sub (padrão, repl, string, count = 0, sinalizadores = 0)
Valor de retorno:
Retorna uma nova string depois de substituir um padrão mais
Retorna a mesma corda
Ex:
importar re
# Ex: Pattern 'lly' corresponde à string em "com sucesso" e "delly"
impressão (re.sub ('lly', '#$', 'nomeação médica reservada com sucesso em delly')))
# Ex: case hasbeen ignorou, usando sinalizador, 'lly' combinará duas vezes com a string
# Após a correspondência, 'Lly' é substituído por '~*' em "com sucesso" e "Delly".
impressão (re.sub ('lly', '#$', 'nomeação de doutor reservada com sucesso em delly', bandeiras = re.IGNORAR CASO))
# Ex: Case sentivity, 'lly' não será reaplicado.
impressão (re.sub ('lly', '#$', 'nomeação médica reservada com sucesso em delly')))
# Ex: como contagem = 1, a substituição máxima dos tempos ocorre é 1
impressão (re.sub ('lly', '#$', 'nomeação de doutor reservada com sucesso em delly', count = 1, sinalizador = re.IGNORAR CASO))
ré.subn ():
funcionalidade subn () igual a sub () de todas as maneiras; A única diferença é fornecer saída. Ele retorna uma tupla que contém uma contagem de um total de substituição e a nova string.
Sintaxe:- re.subn (padrão, repl, string, count = 0, sinalizadores = 0)
Ex:
importar re
impressão (re.subn ('lly', '#$', 'nomeação de doutor reservada com sucesso em delly')))
t = re.subn ('lly', '#$', 'nomeação de doutor reservada com sucesso em delly', bandeiras = re.IGNORAR CASO)
impressão (t)
Imprimir (Len (t))
# Isso dará a mesma saída que sub ()
Imprimir (t [0])
ré.escapar() :
Isso retorna string com barragem '\' antes de cada personagem não alfanumérico. Isso é útil se quisermos combinar uma corda literal arbitrária que possa ter uma expressão regular metacaracters.
Sintaxe:- re.Escape (string)
Ex:
importar re
# abaixo do caso tem apenas ", não é alfanumérico
impressão (re.Escape ("Nomeação médica reservada com sucesso às 13h")))
# abaixo do caso tem ", caret '^', '-', '[]', '\' não são alfanuméricos
impressão (re.Escape ("Ele perguntou o que é isso [0-9], eu disse \ t ^classe numérica")))
Conclusão:
O artigo abrangeu as coisas necessárias para entender a expressão regular em qualquer aplicação. Aprendemos vários métodos e meta -caracteres presentes no Python Regexp usando exemplos.