O que você vai aprender?
RegEx é uma das funcionalidades mais úteis quando o assunto é intepretação de dados não estruturados. Ela nos permite analisar e transformar um texto ou um log de informações, para o formato de tabela, tudo isso através das expressões regulares.
Introdução
Nesta dica você irá aprender algumas formas para lidar com seus dados não estruturados, utilizando REGEX. Para esta dica, utilizaremos uma base genérica e criaremos nossos REGEX para achar nomes, e-mails, URLs e mais.
Nome e Sobrenome
O nome e sobrenome pode ter 2 ou mais nomes em diversos formatos. Para um texto isso se torna genérico. Então para a interpretação vamos considerar a localização deles na String (Antes ou depois de certo texto mais específico), e no nosso exemplo são somente dois nomes logo no início da cadeia de caracteres. Então acrescentamos o símbolo ^ para indicar o início do campo.
RegEx Final: ^(\w+\s+\w+)’
A primeira coisa que devemos prestar atenção quando vamos interpretar um e-mail usando uma expressão regular é no padrão do e-mail que é nome@email(provedor).
O provedor tem uma extensão única, que pode ser “.gov”, “.com.br”, “.net” etc. Então vamos considerar o início e o arroba e trazer os outros caracteres que diferem de um espaço em branco como conteúdo.
RegEx Final: (\S+[@]\S+)
Data
A interpretação de data varia de acordo com o formato de data usado, temos que identificar o dia, mês e ano e onde eles se encontram (no nosso caso usaremos o formato brasileiro dd/mm/yyyy) sendo que o dia e mês podem variar entre 1 e dois dígitos.
Além disso temos que levar em consideração o símbolo que divide nossos números “/”, e na expressão regular para utiliza-lo é preciso coloca-lo entre chaves ou adicionar uma barra invertida (\).
RegEx Final: ([0-9]{1,2}[/][0-9]{1,2}[/][0-9]{1,4})
URL
A URL de um site sempre inicia com http ou https (Fato curioso, o “s” só aparece dependendo do caminho selecionado). Para incluir essa regra só basta incluirmos um ponto de interrogação (?) após o caractere que é opcional.
RegEx Final: https?://(?:www\.)?([^/\s]+)
Telefone
O telefone pode ter diversos formatos, nesse exemplo consideramos o ddd+telefone (fixo ou móvel), assim a quantidade de dígitos é variável.
Por isso assim como na data, precisamos incluir esse digito extra ou não, deixando o número mínimo e máximo entre colchetes, assim [0,9]{1,4} – Qualquer número de 0 a 9 que apareça de 1 a 4 vezes subsequentes.
RegEx Final:
([0-9]{2}\s?[0-9]{4,5}-?[0-9]{4})
IP
Assim como no telefone o IP possui um padrão específico, que varia na quantidade de dígitos, sendo assim podemos utilizar o mesmo formato para a variação que usamos anteriormente.
RegEx Final:
([0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3})
Por isso assim como na data, precisamos incluir esse digito extra ou não, deixando o número mínimo e máximo entre colchetes, assim [0,9]{1,4} – Qualquer número de 0 a 9 que apareça de 1 a 4 vezes subsequentes.
RegEx Final:
([0-9]{2}\s?[0-9]{4,5}-?[0-9]{4})