Se você é um programador, é provável que já saiba o que são expressões regulares (regex). Os padrões Regex foram implementados em quase todas as linguagens de programação convencionais, mas ainda assim, o poder e a versatilidade desses padrões não são reconhecidos pela maioria dos desenvolvedores.

Este guia é sobre expressões regulares e como você pode usá-las na linguagem de programação Python.

O que são expressões regulares?

Expressões regulares são padrões que ajudam um usuário a combinar combinações de caracteres em arquivos de texto e strings. Você pode usar expressões regulares para filtrar ou encontrar um padrão específico na saída de um comando ou documento.

Existem vários casos de uso de expressões regulares, sendo o mais conhecido o comando grep no Linux. Outros aplicativos incluem a filtragem de informações, como a extração de endereços de e-mail e números de telefone de um despejo de dados.

A principal razão pela qual muitos desenvolvedores se desviam das expressões regulares é a falta de consciência sobre o poder da correspondência de padrões. Alguns até acham as expressões regulares confusas devido à grande quantidade de caracteres e sequências usadas nos padrões.

instagram viewer

Seja qual for o motivo, as expressões regulares são e serão um dos aspectos mais importantes da programação que todos devem conhecer.

Expressões regulares: correspondência de caracteres e sequências

Regex é uma linguagem totalmente nova em si. Um mecanismo de regex interpreta padrões compostos por vários caracteres equipados com significados específicos. Literais básicos, como caracteres alfanuméricos, correspondem a si mesmos. Mas caracteres complexos como $, *, +, {, etc. ajuda na correspondência de ordem superior.

  1. Asterisco (*): Corresponde ao caractere anterior zero ou mais vezes. O significado literal do caractere seria "Elemento multiplicado n vezes". Por exemplo, se a expressão regular for abc*, as strings correspondentes serão ab, abc, abcc, abccc, abcccc, etc. A expressão [bc] * corresponderá a bc, bcbc, bcbc, etc.
  2. Mais (+): Corresponde ao caractere anterior uma ou mais vezes. O trabalho do + personagem é semelhante a *, mas o + personagem omite o padrão se o personagem não ocorre. Por exemplo, abc + corresponderá a abc, abcc, abccc, etc. mas não ab.
  3. Ponto de interrogação (?): Corresponde ao caractere anterior zero ou uma vez (es). Por exemplo, o padrão abc? corresponderá apenas a ab e abc.
  4. Tubo (|): Usado como binário OU operador. Corresponde a qualquer um dos caracteres anteriores e posteriores à barra vertical. Por exemplo, a | b corresponderá a a ou b.
  5. Ponto (.): Corresponde a um personagem cuja identidade é desconhecida. Por exemplo, a.c corresponderá a aac, abc, acc, a2c e assim por diante.
  6. Cenoura (^): Corresponde ao primeiro caractere do padrão. Por exemplo, ^ Ra irá combinar palavras começando com Ra como Rabbit, Raccoon e Random.
  7. Dólar ($): Corresponde ao último caractere do padrão. Por exemplo, um $ irá combinar palavras que terminam com a como Van, Dan e Plan.
  8. Hífen (-): Usado para definir uma gama de caracteres. Por exemplo, [0-9] corresponderá a todos os caracteres numéricos de um dígito.

As sequências especiais usadas em padrões de expressão regular são:

  1. \UMA: Retorna uma correspondência se os caracteres seguintes estiverem presentes no início da string. Por exemplo, \ Ahe irá combinar palavras começando com o O como The, Them, They, etc.
  2. \ b: Retorna uma correspondência se o caractere for encontrado no início ou no final de uma palavra. Por exemplo, \ bmad e louco \ b irá combinar palavras como feito e nômade respectivamente.
  3. \ B: Retorna uma correspondência se o caractere não for encontrado no início ou no final de uma palavra.
  4. \ d: Corresponde a caracteres numéricos presentes na string. Por exemplo, /d* corresponderá a números como 1, 12, 1232, etc.
  5. \ D: Corresponde a caracteres não numéricos na string. / D corresponderá a a, b, c, f, etc.
  6. \ s: Corresponde a um caractere de espaço em branco no texto.
  7. \ S: Corresponde a um caractere diferente de espaço em branco no texto.
  8. \C: Retorna uma correspondência se a string contiver caracteres alfanuméricos incluindo sublinhados. Por exemplo, \C corresponderá a a, b, c, d, 1, 2, 3, etc.
  9. \C: Retorna uma correspondência se a string não contiver caracteres alfanuméricos ou sublinhados.
  10. \ Z: Corresponde a caracteres no final de uma string. Por exemplo, fim \ Z irá combinar palavras que terminam com fim como dobrar, consertar, tender, etc.

Métodos Python para expressões regulares

Em Python, o biblioteca fornece todas as funções e utilitários necessários para implementar regex em seus programas. Você não precisa baixar a biblioteca usando pip, pois ela vem pré-instalada com o interpretador Python.

Para importar o biblioteca em Python, adicione o seguinte código ao seu script:

importar re

Observe que, ao passar expressões regulares em Python, usamos strings brutas, pois não interpretam caracteres especiais, como \ n e \ t de forma diferente.

Partida()

O revanche() método em Python retorna um objeto regex se o programa encontrar uma correspondência no início da string especificada. Esta função leva dois argumentos básicos:

re.match (padrão, string)

...Onde padronizar é a expressão regular e fragmento é o texto que precisa ser pesquisado.

Dê uma olhada no trecho de código abaixo.

importar re
match = re.match (r'Word ', "Esta frase contém uma palavra")
imprimir (combinar)

O r caractere antes da string representar string bruta.

Resultado:

Nenhum

O código mencionado retorna Nenhum Porque Palavra não estava presente no início da string.

Se uma correspondência for encontrada, você pode imprimi-la usando o grupo() método que pertence ao objeto regex.

importar re
match = re.match (r'Word ', "A palavra é difícil de ler")
imprimir (match.group (0))

Resultado:

Palavra

Procurar()

O pesquisa() método aceita argumentos semelhantes como re.match (). Enquanto match () retorna apenas as correspondências presentes no início da string, procurar() retornará correspondências encontradas em qualquer índice da string.

importar re
match = re.search (r'Word ', "Esta frase contém uma palavra. A palavra é difícil de ler. ")
imprimir (match.group (0))

Observe que o partida() e procurar() os métodos retornarão apenas uma correspondência de padrão. No código mencionado acima, Palavra aparece duas vezes. Mas o procurar() função irá corresponder apenas à primeira ocorrência da palavra.

Palavra

Encontrar tudo()

Como você já pode imaginar, o encontrar tudo() método retorna todas as correspondências possíveis na string.

importar re
match = re.search (r'Word ', "Esta frase contém uma palavra. A palavra é difícil de ler. ")
para elem em correspondência:
imprimir (elem)

Em vez de retornar um objeto regex, a função findall () retorna uma lista de todas as correspondências. Você pode iterar pela lista usando um for loop em python.

Dividir()

Se você quiser dividir uma string em sub-strings usando um padrão como delimitador, o dividir() função é a que você precisa.

importar re
split = re.split (r'and ', "Esta palavra e aquela e isto são diferentes.")
imprimir (dividir)

Resultado:

['Esta palavra "," isso "," isto é diferente. "]

Sub()

O sub() método permite que um usuário substitua uma palavra específica no lugar de um padrão. Leva os seguintes argumentos.

re.sub (padrão, substituição, string)

Considere este snippet de código:

importar re
result = re.sub (r'and ',' or ', "Dave e Harry devem ser punidos.")
imprimir (resultado)

Resultado:

Dave ou Harry devem ser punidos.

Compilar()

O re.compile () método no biblioteca permite que um usuário armazene uma versão compilada do padrão de expressão regular na memória. Em seguida, usando o objeto compilado, o usuário pode filtrar rapidamente o despejo de texto especificado para padrões correspondentes.

importar re
pattern = re.compile ('Python')
match = pattern.findall ("Python é uma ótima linguagem para escrever scripts. Python é fácil de aprender. ")
imprimir (combinar)

Essa função é usada principalmente para salvar padrões que consomem muitos recursos e precisam de muito tempo para serem executados. Compilar e salvar o padrão como um objeto de antemão resolve esse problema.

Aproveite o poder do Regex com Python

Quando você está trabalhando com arquivos de texto e saída, regex é uma ótima ferramenta à sua disposição. Você pode escrever rapidamente algum código para filtrar ou substituir padrões específicos no documento.

Memorizar todos os caracteres e sequências correspondentes pode ser difícil se você está apenas começando com regex. Para melhorar as expressões regulares, consultar uma lista de caracteres, métodos e sequências de vez em quando definitivamente o ajudará a longo prazo.

E-mail
A folha de referências do Python RegEx para programadores iniciantes

Use esta lista de expressões regulares Python para que você possa melhorar no uso desta linguagem de programação versátil.

Leia a seguir

Tópicos relacionados
  • Programação
  • Programação
  • Pitão
Sobre o autor
Deepesh Sharma (41 artigos publicados)

Deepesh é o Editor Júnior para Linux na MUO. Ele escreve conteúdo informativo na internet há mais de 3 anos. Em seu tempo livre, ele gosta de escrever, ouvir música e tocar seu violão.

Mais de Deepesh Sharma

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Mais um passo…!

Confirme o seu endereço de e-mail no e-mail que acabamos de enviar.

.