Por exemplo, quando você está escrevendo manipuladores para URL (e Deus o ajude se você estiver escrevendo um do zero), muitas vezes você deseja exibir o mesmo resultado, independentemente da trilha '/' no URL. E.g https: // Exemplo.com/user/configurações/e https: // Exemplo.com/usuário/configurações devem apontar para a mesma página, apesar da direita '/'.
No entanto, você não pode ignorar todas as barras para a frente, como:
Então, você cria uma regra como: “Ignore apenas as barras para a frente seguidas de espaço vazio.”E se você quiser, pode codificar essa regra com uma série de declarações if-else. Mas isso ficará pesado rapidamente. Você pode escrever uma função dizendo limpeurl () que pode encapsular isso para você. Mas o universo logo começará a jogar mais bolas de curva em você. Em breve você se encontrará escrevendo funções para CleanHeaders (), Processlog (), etc. Ou você pode usar uma expressão regular sempre que qualquer tipo de correspondência de padrão for necessária.
Antes de entrarmos nos detalhes das expressões regulares, vale a pena mencionar o modelo que a maioria dos sistemas tem para fluxos de texto. Aqui está um resumo curto (incompleto) dele:
Por uma questão de simplicidade, quero que você imagine que um arquivo é composto por linhas que terminam com um personagem de nova linha. Quebramos esse arquivo em linhas individuais (ou strings), cada um terminando com uma nova linha ou um caractere normal (para a última linha).
Regexs e string
Um regex não tem nada, particular, a ver com arquivos. Imagine -o como uma caixa preta que pode tomar como entrada qualquer sequência arbitrária de qualquer comprimento (finito) e, quando atingir o final desta string, ele pode:
Apesar de sua natureza preta de caixa, adicionarei mais algumas restrições a essa máquina. Um regex lê uma string sequencialmente, Da esquerda para a direita, e lê apenas um personagem de cada vez. Então uma string “Linuxhint” com ser lido como:
'L "i" n "u" x "h" i "n" t' [da esquerda para a direita]
Vamos começar simples
O tipo mais simplista de regex seria procurar e combinar uma string 'c'. A expressão regular para isso é apenas 'C'. Bastante trivial. A maneira de fazê -lo em Python exigiria que você importe primeiro o ré módulo para expressões regulares.
>>> Importar re
Em seguida, usamos a função re.procurar(padrão, string) onde padrão é nossa expressão regular e corda na sequência de entrada na qual procuramos o padrão.
>>> re.Search ('C', 'Esta frase tem um C deliberado nele')A função assume o padrão 'C', procura na sequência de entrada e imprime o local (span) onde o referido padrão é encontrado. Esta parte da string, esta substring é o que corresponde à nossa expressão regular. Se não houvesse tal correspondência encontrada, a saída seria uma Nenhum objeto.
Da mesma forma, você pode procurar o padrão 'expressão regular' da seguinte maneira:
>>> re.Pesquise (“Expressão regular”, “Podemos usar expressões regulares para padrões de pesquisa.”)ré.pesquisa (), re.Match () e Re.FullMatch ()
Três funções úteis do módulo RE incluem:
ré.procurar(padrão, string)
Isso retorna a substring que corresponde ao padrão, como vimos acima. Se nenhuma correspondência for encontrada então Nenhum é devolvido. Se várias substâncias substituras estão em conformidade com um determinado padrão, apenas a primeira ocorrência é relatada.
ré.corresponder(padrão, string)
Esta função tenta corresponder ao padrão fornecido desde o início da string. Se encontrar uma pausa em algum lugar no meio do caminho, retorna Nenhum.
Por exemplo,
>>> re.Match ("Joh", "John Doe")Onde, como a string, "meu nome é John Doe" não é uma partida e, portanto, Nenhum é devolvido.
>>> Imprimir (re.Match ("Joh", "Meu nome é John Doe")))ré.FullMatch (padrão, string)
Isso é mais rigoroso do que os acima, e tenta encontrar uma correspondência exata do padrão na string, caso contrário Nenhum.
>>> Imprimir (re.Fullmatch ("Joh", "Joh"))))Eu estarei usando apenas o ré.procurar() função no restante deste artigo. Sempre que digo que a regex aceita essa string, significa que Athe ré.procurar() A função encontrou uma substring correspondente na sequência de entrada e retornou isso, em vez de Nenhumobjeto.
Caracteres especiais
Expressões regulares como 'John' e 'C' não são de muita utilidade. Precisamos de caracteres especiais que um meio específico no contexto de expressões regulares. Aqui estão alguns exemplos:
Há muito mais para cobrir, mas eu recomendaria aprender como você avança, em vez de sobrecarregar seu cérebro com muitos símbolos obscuros e casos de borda. Em caso de dúvida, os documentos Python são uma grande ajuda e agora você sabe o suficiente para seguir os documentos facilmente.
Se você quiser ver uma interpretação visual do seu regex, você pode visitar Debuggex. Este site gera uma visão do seu regex em tempo real e permite testá-lo contra várias strings de entrada.
Para saber mais sobre o aspecto teórico das expressões regulares, você pode querer olhar para os primeiros dois capítulos de introdução à teoria da computação por Michael Sipser. É muito fácil de seguir e mostra a importância das expressões regulares como um conceito central de computação em si!