Principais casos de uso de Regex para tratamento de dados

Maria Gabriela Oliva
Maria Gabriela Oliva

Compartilhe

Dentro da rotina de pessoas que trabalham com tratamento de dados, é muito comum encontrar bases com dados bagunçados. Por isso, é necessário identificar padrões e organizá-los, fazendo substituições e extrações, por valores que façam mais sentido para a regra de negócio. Esse processo facilita na criação de visualizações e até mesmo no relacionamento entre tabelas.

Muitos desses recursos utilizam o Regex para realizar todos os tratamentos. Mas, afinal, o que é o Regex?

Regex é de comer ou passar no cabelo?

Regex, abreviação do inglês Regular Expressions (ou expressões regulares, em português) é um método para especificar um padrão de texto. O regex pode realizar:

  • buscas em determinados padrões dentro de um texto, como e-mails, telefones e datas.
  • validações em vários padrões, como telefones, senhas e emails.
  • alterações em qualquer palavra, letra, caractere especial ou trecho dentro de um texto.
Banner promocional da Alura com fundo azul escuro. No topo, o logotipo da Alura. O texto diz: “O presente é SEU. Chegou o Aniversário da Alura e preparamos uma surpresa PARA VOCÊ. 20% OFF para estudar na Alura. Válido de 12 a 23 de maio”. Abaixo, um botão rosa com a frase “APROVEITE O DESCONTO”. Na parte inferior do banner, há a imagem de uma caixa de presente azul com laço brilhante.

Onde Regex é aplicado?

Podemos utilizar expressões regulares:

SELECT * FROM filmes WHERE titulo REGEXP '^[era uma vez]';

O acento circunflexo [^] significa que a correspondência de padrão deve ser aplicada no início. Já a lista [era uma vez] sugere que apenas títulos de filmes que começam com era, uma ou vez são retornados em nosso conjunto de resultados.

  • Para criar funções de validação com linguagens de programação, como Java, Python.
private void setEmail(String email) 
    	String regex = "^[A-Za-z0-9+_.-]+@(.+)$";
    	if (!email.matches(regex)) {
        	throw new IllegalArgumentException("Email Inválido!");
    	}
    	this.email = email; 

Esse trecho de código é um método em Java que valida se o texto digitado no campo é um e-mail.

  • Extração de dados em variados padrões, como e-mails, datas, telefones, etc.

Suponhamos que temos uma base de dados em que o CPF se encontra em vários lugares desse arquivo e precisamos extrair e organizar em uma nova coluna. Para isso, podemos usar a seguinte expressão regular:

[0-9]{3}\.?[0-9]{3}\.?[0-9]{3}\-?[0-9]{2}

Aqui podemos utilizar a faixa de caracteres de zero a nove, separado por pontos. A barra é utilizada junto com o ponto e o hífen, pois eles sozinhos são considerados como caracteres especiais.

Regex em tratamento de dados

Em tratamento de dados, usamos o regex principalmente para substituição e extração de valores. No Tableau, temos três funções que podem ser usadas com expressões regulares. Para apresentá-las, vamos utilizar uma base de dados de produtos na qual precisamos fazer alguns tratamentos.

  1. REGEXP_REPLACE(string, padrão, substituição)

É uma função onde vamos buscar o padrão de caracteres a partir da expressão regular e fazer a substituição desse padrão. Em nossa base de dados de produtos, precisamos substituir os números, hífens e underlines. Para isso, vamos criar uma medida usando a fórmula:

REGEXP_REPLACE([categoria_produto], '[0-9]|[-]|[_]', '\ ')

Teremos o seguinte resultado:

Canvas do Tableau. Na parte superior temos duas linhas. A primeira linha apresenta duas células, uma com o nome Colunas e a outra está vazia. Na segunda linha temos duas células, uma com o nome Linhas e a outra preenchida pelos campos “categoria_produto” e “categoria”. Abaixo dessas linhas temos o título da planilha, denominada “Planilha1”. Abaixo do título, há 3 colunas. A primeira coluna apresenta 23 linhas com as respectivas informações: categoria_produtor, 1-agro_industria_e_comercio, 2-alimentos, 3-artes, 4-artes_e_artesanato, 5-artigos_de_festas, 6-artigos_de_natal, 7-audio, 8-automotivo, 9-bebes, 10-bebidas, 11-beleza_e_saude, 12-brinquedos, 13-cama_mesa_e_banho, 14-casa_e_conforto, 15-casa_e_construcao, 16-cds_e_musicais, 17-cine_e_foto, 18-climatizacao, 19-consoles_e_games, 20-ferramentas_de_construcao, 21-ferramentas_de_iluminacao, 22-ferramentas_de_jardim. Na segunda coluna temos 23 linhas com as respectivas informações: categoria, Agro industria e comercio, Alimentos, Artes, Artes e artesanato, Artigos de festas, Artigos de natal, Audio, Automotivo, Bebes, Bebidas, Beleza e saude, Brinquedos, Cama mesa e banho, Casa e conforto, Casa e construcao, Cds e musicais, Cine e foto, Climatizacao, Consoles e games, Ferramentas de construcao, Ferramentas de iluminacao, Ferramentas de jardim. A terceira coluna apresenta 23 linhas, sendo a primeira célula vazia e as outras 22 com a informação Abc repetida em cada linha.

  1. REGEXP_MATCH(cadeia de caracteres, padrão)

É uma função que retorna verdadeiro se o padrão de caracteres corresponde à expressão regular. Caso contrário, será retornado falso. Para vermos como funciona, vamos usar o campo categoria e criar uma medida usando a fórmula:

REGEXP_MATCH([categoria],'([0-9])')

Teremos o resultado a seguir:

Canvas do Tableau. Na parte superior temos duas linhas. A primeira linha apresenta duas células, uma com o nome Colunas e a outra está vazia. Na segunda linha temos duas células, uma com o nome Linhas e a outra preenchida pelos campos “categoria” e “match”. Abaixo dessas linhas temos o título da planilha, denominada “Planilha1”. Abaixo do título, há 3 colunas. A primeira coluna apresenta 23 linhas com as respectivas informações: categoria, Agro industria e comercio, Alimentos, Artes, Artes e artesanato, Artigos de festas, Artigos de natal, Audio, Automotivo, Bebes, Bebidas, Beleza e saude, Brinquedos, Cama mesa e banho, Casa e conforto, Casa e construcao, Cds e musicais, Cine e foto, Climatizacao, Consoles e games. Na segunda coluna temos 23 linhas, sendo a primeira o campo “match” e as 22 linhas seguintes com palavra “Falso” em cada linha. A terceira coluna apresenta 23 linhas, sendo a primeira célula vazia e as outras 22 com a informação Abc repetida em cada linha.

  1. REGEXP_EXTRACT(cadeia de caracteres, padrão)

É uma função que extrai uma cadeia de caracteres a partir da expressão regular. Em nossa base de dados de produtos, precisamos extrair o id da categoria do produto. Para isso, vamos criar uma medida com a fórmula:

REGEXP_EXTRACT([categoria_produto], '(\d+)')

Teremos o seguinte resultado:

Canvas do Tableau. Na parte superior temos duas linhas. A primeira linha apresenta duas células, uma com o nome Colunas e a outra está vazia. Na segunda linha temos duas células, uma com o nome Linhas e a outra preenchida pelos campos ““categoria_produto”” e “id_produto”. Abaixo dessas linhas temos o título da planilha, denominada “Planilha1”. Abaixo do título, há 3 colunas. A primeira coluna apresenta 23 linhas com as respectivas informações: categoria_produto, 1-agro_industria_e_comercio, 2-alimentos, 3-artes, 4-artes_e_artesanato, 5-artigos_de_festas, 6-artigos_de_natal, 7-audio, 8-automotivo, 9-bebes, 10-bebidas, 11-beleza_e_saude, 12-brinquedos, 13-cama_mesa_e_banho, 14-casa_e_conforto, 15-casa_e_construcao, 16-cds_e_musicais, 17-cine_e_foto, 18-climatizacao, 19-consoles_e_games, 20-ferramentas_de_construcao, 21-ferramentas_de_iluminacao e 22-ferramentas_de_jardim. Na segunda coluna temos 23 linhas, sendo a primeira o campo “id_produto” e as 22 linhas seguintes com os números de 1 a 22, sendo um em cada linha. A terceira coluna apresenta 23 linhas, sendo a primeira célula vazia e as outras 22 com a informação Abc repetida em cada linha.

Caso queira saber mais sobre expressões regulares no Tableau, fique à vontade para ler a documentação.

Quer saber mais?

Se você se interessou pela temática, temos o curso perfeito para você: Dashboard com Tableau: Conceitos essenciais. Nele você vai aprender os conceitos, como instalar e utilizar essa ferramenta.

Maria Gabriela Oliva
Maria Gabriela Oliva

Oi, eu sou a Maria.Sou graduada em Sistemas para Internet, apaixonada por tecnologia, dados e gatos. Já atuei em algumas áreas antes de vir para área de dados, como: devops e desenvolvimento de software. Atualmente estou na área de dados, com conhecimento em banco de dados, SQL e nas mais variadas ferramentas de Business Intelligence.

Veja outros artigos sobre Data Science