Principais casos de uso de Regex para tratamento de dados

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.

Onde Regex é aplicado?
Podemos utilizar expressões regulares:
- Em banco de dados para realizar consultas.
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.
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:

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:

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:

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.