O que são expressões regulares ? Introdução as Regex com exemplos

Entenda os padrões utilizados para selecionar combinações de caracteres em uma string. Também chamados de Regex.

O que são expressões regulares ? Introdução as Regex com exemplos

Expressão Regular banner imagem

A primeiro modo pesquisando na internet podemos encontrar definições confusas e um tanto complexas que na prática não nos ensinam o que são expressões regulares, para começar vamos a um exemplo simples 😃👍.

Supomos que você queira procurar em um texto qualquer todos os e-mails que lá existem (para fazer aquele spam maroto 😉).

Como você faria isso com programação ? 🤔

Possivelmente você teria que ler o texto caractere a caractere identificar um arroba, ler caracteres antes e depois da arroba… o que vai nos dar uma grande e complexa gambiarra. Para esse tipo de consulta onde sabemos qual o "formato" de conteúdo desejamos (no caso um e-mail), podemos encontrar uma regularidade entre exemplos de que desejamos obter e buscar por essa regularidade usando uma Regex. 

Mas qual seria a regularidade entre e-mails ? ✉️

Exemplos de e-mails: 

  • contato@codebr.net
  • codebr@gmail.com

Regularidade entre eles: 

letras + @ + letras + . + letras

Considere as letras aleatórias mas o arroba e o ponto sempre sempre serão os mesmos, beleza ? 👍

Esse nosso exemplo nos resultará no seguinte padrão (ou pattern):

/[a-z]{3,20}@[a-z]{3,20}.[a-z]{2,5}/m

Então, vamos explorar essa Regex: 

As barras, delimitam o começo e o fim da expressão:

/[a-z]{3,20}@[a-z]{3,20}.[a-z]{2,5}/m

O que vem depois da barra final são as “flags”, as configurações da nossa expressão. 

/[a-z]{3,20}@[a-z]{3,20}.[a-z]{2,5}/m

  • M "multiline", busca resultados em todas as linhas do texto.

De todo modo, abordaremos mais sobre flags em outro artigo.

A primeira parte da Regex busca pelo nome do email, o texto que vem antes do arroba. Entre colchetes os caracteres indicados, no caso de a à z, ou seja, o nosso alfabeto. Já entre chaves o número de ocorrências. No caso de 3 a 20 ocorrências/repetições dos caracteres do alfabeto delimitados nos colchetes.

/[a-z]{3,20}@[a-z]{3,20}.[a-z]{2,5}/m

Após isso temos o arroba do e-mail:

/[a-z]{3,20}@[a-z]{3,20}.[a-z]{2,5}/m

Depois do arroba encontramos a mesma estrutura que busca pelo nome do email mas nesse caso buscará pelo domínio do e-mail, mesma situação de 3 a 20 caracteres de a à z.

/[a-z]{3,20}@[a-z]{3,20}.[a-z]{2,5}/m

O ponto que separa o nome do domínio da extensão.

/[a-z]{3,20}@[a-z]{3,20}.[a-z]{2,5}/m

E por fim a extensão do e-mail, usamos a mesma lógica do nome novamente mas reduzimos a quantidade de caracteres pois geralmente extensões de e-mails tem poucos caracteres.

/[a-z]{3,20}@[a-z]{3,20}.[a-z]{2,5}/m

Texto de exemplo com a aplicação da Regex:

Você pode entrar em contato com a CodeBR pelo e-mail exemplo@codebr.net ou teste@codebr.net. Também disponibilizamos um e-mail comercial o comercial@codebr.net ou contatocodebr@gmail.com. Fique à vontade para falar conosco.

Exemplo da mesma seleção com Regex em PHP:

Usando Regex para filtrar conteúdo 

Mas nem só para selecionar conteúdo em um texto expressões regulares são usadas. Em muitos casos elas são usadas para remover caracteres indesejados recebidos em seu sistema.

Então vamos a um segundo exemplo, supomos que você tenha um input e nele um usuário pode digitar seu telefone 📞.

Porém você deixa o input como tipo texto então seus usuários podem digitar vários caracteres, não só números. Quando os dados chegarem para você no backend de sua aplicação você pode optar por realizar um processo chamado de sanitização de dados, onde removemos valores indesejados nesse caso removemos tudo o que não é número.

Exemplo da aplicação dessa Regex:

Cabe aqui um adendo importante, não use a expressão regular acima para buscar e-mails de fato ela é apenas demonstrativa e não abrange sequer metade dos e-mails existentes pois não leva em consideração letras maiúsculas, números e símbolos.

Comentários

Nome:

Email (não será publicado):

Comentário: