Blog

Postado em em 23 de junho de 2022

RegEx no Python: aprenda como usar as expressões regulares

No domínio da programação, as expressões regulares (Regex no Python) aplicam conceitos da chamada teoria da computação de uma forma mais prática e usual. Permite compreender formatos de strings e processá-las com determinadas funções.

Nesse sentido, é preciso adentrar no Regex do Python e em suas múltiplas funcionalidades interessantes. Com elas, é possível fazer uma série de operações fundamentais no dia a dia.

Para saber mais sobre como usar as expressões regulares no Python, acompanhe com atenção o texto a seguir. 

O que é uma expressão regular?

Você sabe o que é o Regex em Python? É uma contração conhecida para Regular Expressions no Python, mas o que é isso?

É uma forma bem útil e eficiente para coletar informações em strings, encontrar padrões de textos no Python.

Vou dar um exemplo que vai ficar bem claro! Verificação de e-mail e senha, isso é algo bem comum e conseguimos verificar se tem um padrão específico ali.

Já viu quando você digita um e-mail fora do formato ou uma senha que não tem o padrão pedido? Essa é uma verificação possível com o Regex!

O Regex é uma forma computadorizada de entender strings como um conjunto de padrões. De certa forma, ele ajuda a ensinar às máquinas alguns formatos que usamos diariamente como uma norma.

Pense, por exemplo, em um CPF. Para trabalhar com CPFs em um sistema, você deve partir do pressuposto de que a sequência de números tem que estar naquele formato, com vários blocos separados por um ponto. 

A expressão regular ajuda a definir isso e permite validar as entradas para que não haja erros. 

Além de validação, regex no Python também é usado para fazer buscas. É possível filtrar perfeitamente os elementos buscados ou estabelecer combinações de caracteres e quantidades para buscar um conjunto abrangente.

Dá para automatizar a busca para não ter que detalhar todos os elementos e ocorrências. O Regex do Python permite filtrar por elementos similares para facilitar o seu trabalho.

Outros usos são para dividir strings e fazer remoção de caracteres específicos.

Pode ajudar a tratar uma base de dados para remover dados incompletos, errados ou inválidos também. É possível substituir elementos e fazer outras operações diversas. 

Hoje vemos aplicações no mundo do processamento de linguagem natural (PLN), uma aplicação da inteligência artificial para compreender textos. É muito comum em apps de chat e conversação. 

Para tratar e automatizar a busca por significado, os modelos inteligentes aplicam um pouco de Regex. Afinal, isso permite lidar com as múltiplas variações e a complexidade natural de um texto escrito. 

O universo do Regex é vasto e possibilita uma infinidade de funções e atividades.

Sintaxe e metacaracteres em RegEx

O Regex no Python segue uma lista de elementos e de significados para possibilitar que as operações sejam executadas. 

  • [] – conjunto de  caracteres;
  •  \ – sequência especial de caracteres;
  • ^ – buscar elementos no início da string;
  • $ – buscar elementos no final da string;
  • * – buscar zero ou mais repetições de uma substring;
  • + – uma ou mais aparições de uma substring;
  • ? – zero ou uma aparição;
  • | – busca um caractere ou outro.

Assim, você pode criar uma expressão completa que selecione elementos dentro de uma string. 

Visualmente, expressões regulares tendem a ser difíceis de ler e um tanto confusas. Contudo, quem entende seu funcionamento consegue usar para o que precisa e decifrar com tranquilidade.

Como usar expressões regulares no Python?

No Python, você tem uma série de facilidades que ajudam a manipular as expressões regulares.

Para isso, você precisará da biblioteca re.

Biblioteca re para operações com RegEx

Essa biblioteca apresenta os padrões que já mostramos e mais alguns adicionais.

É importante notar alguns elementos específicos. O caractere “/d” é usado para encontrar qualquer dígito. Ao passo que o “/D” é usado para encontrar componentes que não são digitos.

O “/w” dá match com qualquer elemento alfanumérico. Já o “/W” dá match com qualquer um que não seja alfanumérico, seguindo a mesma lógica. O “/s” encontra espaços em branco, ao passo que o “/S” é o contrário.

O ponto retorna qualquer caractere.

Nessa biblioteca, é importante notar o uso das chaves para determinar quantidades específicas. “{m,n}” especifica que ele vai retornar de m a n caracteres. 

Por exemplo: a{3,5} vai dar match com elementos que possuem de 3 a 5 caracteres a. Nem mais, nem menos do que isso. 

Conheça as principais funções Regex

Vamos comentar agora as principais funções do Regex no Python. 

1. re.match

A sintaxe é re.match(padrão, string, flags=0) e tenta encontrar um padrão dentro de uma string. Por exemplo, seguindo o exemplo que já mencionamos, você pode usar para tentar achar o padrão de um CPF. 

Caso a função não encontre o que procura, vai retornar None. 

2. re.findall

Para retornar uma lista de elementos com aquele padrão, use o findall. Ele é muito útil quando você necessita de todas as ocorrências de uma substring, em um dado padrão, para então manipular isso de alguma forma.

Um exemplo de uso é captar todos os advérbios de uma frase, por exemplo. 

3. re.sub

Serve para buscar um padrão e substituí-lo por outro. Então, retorna uma nova string, a que tomou o lugar da anterior. Em caso de não encontrar o padrão, retorna a string normal.

4. re.finditer

Essa função faz uma iteração de strings em busca de um dado padrão. A sintaxe é finditem(padrão, string, flags). Ou seja, faz um loop entre as correspondentes para localizá-las e retorna também o índice dessas strings. 

Aliás, essa é a diferença para o findall: o retorno do índice.

5. re.search

Permite a busca por um padrão e retorna informações completas, como a posição inicial e a final daquele padrão dentro de uma string, além, é claro, da própria string.

Essa função retorna somente a primeira ocorrência de uma dada string. Para encontrar todas as aparições, você deve recorrer ao findall, como já falamos. 

Aprenda RegEx no Python com a prática

A ideia dessa aula é te dar uma breve introdução para sair do zero em Regex e te ensinar o básico para que você possa fazer sua análise de dados no Python.

Antes de começar nós precisamos fazer a instalação da biblioteca re para podermos utilizar o Regex.

OBS: Vale lembrar que para esse exemplo nós vamos utilizar o Jupyter, então se você ainda não estiver instalado basta clicar aqui em nosso passo a passo de instalação!

Outro ponto importante é que temos o arquivo todo pronto disponível, então isso já vai te ajudar e já temos o link da documentação dessa biblioteca.

Então se você tiver qualquer dúvida pode acessar essa documentação para auxiliar nos seus projetos.

regular expressions no python 1

Agora vamos às explicações sobre o que temos na nossa cartilha que vai te ajudar a entender Regex na linguagem Python!

regular expressions no python 2

Aqui nós temos um exemplo para buscar um padrão, temos o texto arara e dentro dele vamos utilizar o re.compile para setar um padrão.

Esse padrão é começar com a letra A ter 3 letras quais que não seja uma nova linha (representada pelo ponto) e termine com a letra A.

Isso quer dizer que vamos buscar por um padrão de 5 letras que comece em A e termine em A.

OBS: Você deve ter notado que antes do nosso texto ‘a…a’ nós colocamos um r antes. Isso é para que o Python leia o texto exatamente como está e não leia nenhum comando especial que possa vir a aparecer — pois temos a “\”, que busca um caractere que está logo à direita. Só que quando \n é utilizado dentro do texto, trata-se de um comando para pular uma linha, e não é isso que queremos. Por isso precisamos colocar a letra r antes.

Dessa forma, vamos poder encontrar padrão de strings no nosso texto!

regular expressions no python 3

Outro exemplo que temos para os caracteres é o ^ e o [^] que vai testar o início da  string e vai verificar todos os caracteres exceto o escolhido.

No primeiro exemplo, temos [^a], isso quer dizer que vamos considerar todos os caracteres dessa string menos a letra a.

Já no segundo exemplo, estamos testando apenas o início da string se ela começa com a letra a ou não.

regular expressions no python 4

Aqui, nós temos alguns métodos para obter algumas informações, aqui com o método match nós vamos verificar se o texto ou letra foi encontrado e vamos ter também a posição dele.

OBS: Você pode notar que nesse caso temos o mesmo resultado para o método match e Search, no entanto isso acontece porque o match ele só busca no início da string, enquanto o search procura em toda a string, então dependendo do que for buscar o resultado pode ser o mesmo.

Em seguida, nós criamos um iterador com o check_finditer = t.finditer(texto), e ao criá-lo nós podemos utilizá-lo com um for, assim vamos poder buscar ao longo do texto.

Por exemplo, quando temos o span=(0,1) quer dizer que a letra a foi encontrada na posição 0 até a posição 1 (que não está incluída), então está na posição 0, na posição 2 e 4.

Lembrando que no Python a posição da nossa string vai sempre começar no 0, por isso temos essas letras nas posições 0, 2 e 4.

Então aqui já vamos verificar o que estamos procurando e já vamos ter a posição onde está a nossa busca!

regular expressions no python 5

Outro exemplo interessante, ainda utilizando o iterador para procurar em toda a string, nós podemos fazer uma distinção entre letras maiúsculas e minúsculas e uma distinção de números.

Então, estamos procurando de a até z tanto em maiúsculo quanto minúsculo, e procurando os valores de 0 até 9.

E novamente vamos ter o match do que estamos procurando e a posição dessa informação, como temos um texto que já começou na segunda linhas você vai notar que nosso primeiro match foi na posição 1 ao invés de ser na posição 0.

regular expressions no python 6

Aqui temos os quantificadores, ainda utilizando a iteração para poder passar por toda a string.

Aqui temos 3 tipos, podemos verificar 0 ou mais ocorrências, 1 ou mais ocorrências e 0 ou uma ocorrência.

Assim podemos saber como foi a ocorrência e em qual posição ela aconteceu para facilitar novamente para quando formos fazer qualquer tratamento, seja para pegar essa informação, substituir, etc.

regular expressions no python 7

Para finalizar, nós vamos apresentar o Regex de e-mails como uma forma para obter os e-mails dessa string que nós temos.

No primeiro bloco dentro do nosso re.compile vamos verificar se tem letras (maiúsculas ou minúsculas), números, underline, ponto, mais e menos.

Já o + fora significa que vamos ter que ter pelo menos uma ocorrência antes do @, seja qualquer um dos caracteres que colocamos na verificação.

Em seguida, vamos verificar o que temos no domínio que pode conter letras (maiúsculas e minúsculas), números, traço e ponto. Novamente vamos colocar o + do lado de fora para informar que vamos querer pelo menos 1 ocorrência.

Com isso, nós já conseguimos buscar todos os e-mails com os seus devidos domínios completos!

IMPORTANTE: Aqui mostramos alguns exemplos para que você saiba como utilizar o Regex em Python, mas na cartilha que disponibilizamos deixamos alguns exemplos extras e o link para a documentação caso você tenha alguma dúvida!

Conclusão

Nessa aula, eu te mostrei alguns exemplos de Regex no Python para que você saiba como encontrar alguns padrões e buscar informações dentro de strings.

Dessa forma, você vai conseguir fazer suas validações em e-mails, senhas, textos em geral para saber se contém o formato desejado!

Quer sair do zero no Power BI e virar uma referência na sua empresa? Inscreva-se agora mesmo no Power BI Impressionador