Free Trial

Blog

Insights e ideias das mentes mais brilhantes em análise de dados.
pedrodrfaria
Pulsar

E ai pessoal, esse aqui vai ser o primeiro de uma mini serie de posts sobre Regex. Esse primeiro será muito mais para introduzir o que é Regex e entender um pouco mais como é usado.

 

 

Quantas vezes já ouvimos falar do termo Text Parsing? Ele é bem genérico né? Mas de um certo ponto ele não é não.

 

Se você quer extrair o logradouro de um endereço, como você faz?

- Se você falou usar alguma lógica de Substring/Findstring, o juiz da partida de futebol acabou de te dar uma advertência verbal.

- Escrever várias logicas IFs? Ai agora você está pedindo realmente pra levar um cartão amarelo.

- Abrir o Excel e extrair manualmente? Tá, agora você está parecendo o Zidane dando cabeçada no rival em plena final de Copa do Mundo, está pedindo o vermelho.

 

Se você já ficou curioso para clicar naquela aba verde logo do lado do Join nas ferramentas do Alteryx Designer, vem comigo que vamos falar da ferramenta mais legal ali, o Regex.

 

 

- Mas Pedro, que raios é Regex?

- Ué, é abreviação de Regular Expression, agora vai lá e se diverte com ela.

- Brincadeira rs.

 

 

Regex é o gol no futebol, é a última batata frita no seu lanche, é acordar cedo e perceber que tem mais 5 horas de sono. Regex é a solução dos seus problemas.

Acho que já está bom de brincadeirinhas né rs. Vamos para a parte seria, mas super legal. Vou mostrar abaixo um pouco mais do Regex para você começar a engatinhar nesse aprendizado.

 

Regex é uma sequência de caracteres que define um padrão de pesquisa. Normalmente, esses padrões são usados por algoritmos de pesquisa de strings para operações de "localização" ou "localização e substituição" em strings ou para validação de entrada. Em resumo, o Regex é uma lógica flexível de identificar um grupo de sequência de caracteres.

 

Mas então isso é uma linguagem de programação? Na verdade, não. Pense no Regex como a gramática da linguagem e não a linguagem em si. 

 

Sabe qual é a parte mais legal do Regex? A quantidade de conteúdo/apoio que se tem online para implementar a gramatica correta do Regex. Vou listar alguns dos melhores sites para ajudar caso você tem alguma dúvida:

 

Para facilitar, adicionei abaixo algumas das variaveis mais utilizadas:

 

Simbolo Descrição
. qualquer caractere, exceto a quebra de linha \n
[ ] qualquer caractere incluido no conjunto
[^] qualquer caractere não incluido no conjunto
\d o mesmo que [0-9], qualquer digito
\D o mesmo que [^0-9], qualquer caracter tirando digitos
\s espaço, quebra de linha, tabs etc.
\S o mesmo que [^ \t\n\r\f\v], qualquer caracter tirando espaços
\w o mesmo que [a-zA-Z0-9], caractere de palavra
\W qualquer caractere sem ser de palavra
\l letras minusculas
\L letras maiusculas
\n quebra de linha
\t espaçamento de tab
\ necessário para utilizar algum caracter que é usado como variavel (ex: " . "). Anula o significado da variavel Regex
{n} exatamente n ocorrências
{n,m} no mínimo n ocorrências e no máximo m
{n,} no mínimo n ocorrências
{,n} no máximo n ocorrências
? 0 ou 1 ocorrência; o mesmo que {,1}
+ 1 ou mais ocorrência; o mesmo que {1,}
* 0 ou mais ocorrência

 

 

 

Já escrevi quase 400 palavras, mas até agora não falei nada de Alteryx, então vamos mostrar um pouco mais nesse lindo software.

 

Na categoria de Parse, você encontrará o Regex, a interface é bem simples:

pedrodrfaria_0-1614039164654.png

 

 

Como Utilizar:

Com o Regex você poderá ou escrever utilizando as funções, \n, \d, \w, etc.. ou escrever realmente como é no texto. No contexto descrito acima, você escrever 18 ou \d+ significa a mesma coisa, mas é sempre mais interessante a utilização do \d+ simplesmente pelo fato de que assim qualquer outro digito diferente será levado em consideração em comparação com apenas escrevendo 18 que se outro digito aparecer não será considerado. Assim começamos a criar uma lógica dinâmica e flexível para o tipo de caractere que estamos procurando e não o caractere em si especificamente.

 

Prestar Atenção:

O uso do parêntesis é essencial para o funcionamento do Regex em algumas funções. Quando funções são escritas dentro de parêntesis, as funções são consideradas para analise, quando escrito fora, serão desconsideradas.

 

Length:

Porque estamos tentando identificar o sequencia de caracteres, nem sempre saberemos o length exato do texto, mas o Regex te dá ótimas soluções.

  • O uso do * simboliza nenhuma ou mais de uma vez o item. Então se você não sabe se o item vai aparecer e se pode aparecer em sequência, você pode usar o * para a sua função.
  • O uso do + simboliza uma ou mais de uma vez o item. Então se você não quantas vezes o item vai aparecer e se pode aparecer em sequência, você pode usar o + para a sua função.
  • O uso de { } simboliza que o valor numérico que está dentro de colchetes será quantas vezes será repetido. Esse método é menos flexível, mas existem situações que você precisa especificar quantas vezes o caractere irá se repetir, nessas situações, a melhor opção são os colchetes. Nessa situação é escrito como por exemplo \d{3} .

 

No exemplo abaixo estamos realizando um método de Parse para extrair o nome Pedro do campo “Nome”. O símbolo \w procura um caractere de palavras. Se apenas utilizarmos \w, irá procurar apenas um caractere de palavra, nesse caso seria apenas o “P”.

pedrodrfaria_1-1614039164657.png

 

  • Então quando utilizamos (\w*) estamos procurando zero ou mais vezes um caractere de palavra, o que nos dará o primeiro nome completo até o próximo caractere que não seja um caractere de palavra, nesse caso seria o espaço entre “Pedro” e “Faria”
  • Então quando utilizamos (\w+) estamos procurando uma ou mais vezes um caractere de palavra, o que nos dará o primeiro nome completo até o próximo caractere que não seja um caractere de palavra, nesse caso seria o espaço entre “Pedro” e “Faria”
  • Então quando utilizamos (\w{3}) estamos procurando quando o caractere de palavra se repete 3 vezes consecutivas, nesse caso nos dará como resultado apenas “Ped”, para trazer o nome inteiro teremos que utilizar (\w{5})

Note que para todos os exemplos, o segundo nome “Faria”, não aparecerá no resultado porque a nossa função não está considerando o espaço entre “Pedro” e “Faria”. Para dar certo, teria que ser “(\w*\s*\w*) ou  (\w+\s+\w+) ou (\w{5}\s\w{5})   

 

 

 

No Alteryx você terá 4 métodos diferentes de usar o Regex, vamos falar de cada um. Anexei também os exemplos por dentro do Alteryx.

 

Replace:

Baseado na sequencia definida, iremos identificar o campo para ser trocado. Nessa opção é importante se preocupar com a ordem da sequência de grupos diferente de caracteres. Tem que se prestar atenção para replicar exatamente como o texto está escrito para um resulto mais certeiro. Como explicado anteriormente, é necessário a utilização de parêntesis para o matching correto, o que ficar fora do parêntesis é o que não queremos que seja considerado nesta análise.

 

Onde podemos escolher o texto para substituir é bem interessante porque podemos seguir qualquer logica que queremos. No exemplo abaixo estamos reescrevendo totalmente o campo e ainda trocando a ordem da sequencia do grupo de caracteres, nesse caso o texto numérico agora vem no inicio da frase e não mais no fim dela.

 

Dica, use o $ para puxar o grupo de caracteres identificados no Regex. Nesse caso a função (\d+) é a segunda função desse Regex, assim com o $2 eu consigo chamá-la e utilizá-la de uma forma diferente do que era antes.

 

Configuração - (\w+)\s*(\d+)

pedrodrfaria_2-1614039164660.png

 

 Resultado

pedrodrfaria_11-1614041386999.png

 

Parse:

Esse talvez seja o método mais utilizado. Esse método não precisa de muita explicação, ele é bem simples. Como o Replace, iremos escrever a função do Regex a fim de identificar grupos de sequencias de caracteres. Assim, com a utilização dos parênteses, iremos realizar a extração do grupo de caracteres sequenciais. Com o Parse, o objetivo é apenas extrair uma parte do texto.

 

No exemplo abaixo estamos extraindo o valor de data, note que estamos usando a barra “/” como separador dos dígitos no formato de data. Então apesar de que a sequencia está certa, no terceiro exemplo estamos usando o hífen “-“como separador, então não irá funcionar. É importante estar ciente de que tanto quanto a sequencia e os caracteres estarem batendo exatamente se formos escrevê-los diretamente invés de usar as funções do Regex. Para extrairmos corretamente, poderiamos utilizar alguma variavel flexivel para transformar os separadores .

 

Configuração - (\d*/\d*/\d*)

 

pedrodrfaria_4-1614039164667.png

 

Resultado

pedrodrfaria_5-1614039164668.png

 

 

Match:

Com o Match, estamos identificando se o campo de texto está exatamente como definimos o Regex. O resultado do Match é True ou False para caso a função Regex esteja no mesmo formato do que o campo de texto. O Match é muito utilizado para a verificação/revisão de uma base de dados para ver se o formato do texto está correto.

No exemplo abaixo estamos procurando para ver se no campo de texto temos 2 nomes separados por um espaço. Assim podemos ver no resultado quais nomes estão no formato correto e quais não estão.

 

Configuração – (\w+\s+\w+)

pedrodrfaria_6-1614039164670.png

 

Resultado

pedrodrfaria_7-1614039164671.png

 

 

Tokenize:

Esse método irá olhar para a função e gerar saídas (predefinidas) que correspondem a sequência de caracteres do campo de texto onde existe a repetição da sequência. Esse método é melhor usado quando temos a repetição da mesma sequencia de caracteres.

No exemplo abaixo, a partir de que estamos procurando por qualquer coisa que não seja uma virgula ([^,]), conseguimos quebrar em quatro linhas (ou colunas).           

 

Configuração - [^,]+

pedrodrfaria_8-1614039164675.png

 

Resultado

pedrodrfaria_9-1614039164675.png

 

pedrodrfaria_10-1614039164676.png

 

 

 

Bom, agora você já foi introduzido ao universo do Regex, já comprou a chuteira e a bola, falta só ir pro campinho e jogar futebol. Esse artigo foi uma introdução a utilização do Regex dentro do Alteryx. Em breve estarei lançando exemplos mais concretos de como utilizar Regex com Use Cases diferentes. Espero que tenham gostado e que se já não começaram, que comecem a utilizar o Regex.

 

Muito obrigado por se interessarem nesse conteudo. Estou deixando abaixo meu linkedin para caso tenham qualquer feedback ou apenas quiserem se conectar: https://www.linkedin.com/in/pedrodrfaria/ 

 

Pedro Faria.

 

 

 

Comentários
Rótulos