Principais casos de uso de Regex para tratamento de dados

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 da Escola de Data Science: Matricula-se na escola de Data Science. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!

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.

2) 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.

3) 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