1
resposta

[Dúvida] REGEX EXTRACT

Pessoal, boa tarde,

Senti que no curso faltou um pouco sobre Regex para Looker Studio, e fique com uma duvida,

Vamos supor que vou fazer um grafico de colunas, e ele mostra a primeira coluna da tabela abaixo como eixo x, mas na real gostaria que aparecesse a sgeunda coluna no eixo. Idenfiquei que o padrão que quero é manter o texto antes do hifen e no caso da pagína principal, substituir por Home.

Creio que eu deveria usar regex_extract, contudo não sei direito, como faria? A sintaxe ao meu ver seria.

CASE WHEN TITULOS DAS PAGINAS = "Receitas de Casa" THEN "Home" REGEXP_EXTRACT(TITULOS DAS PAGINAS,"[a-z].*?-")

Mas está dando errado haha Obrigado!

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Oi, Enzo, tudo bem?

Desculpe a demora em te responder!

A sintaxe que você utilizou está quase correta. Contudo, podemos realizar alguns ajustes para que a expressão funcione corretamente. Ficaria assim:

CASE 
  WHEN TITULOS_DAS_PAGINAS = "Receitas de Casa" THEN "Home" 
  ELSE REGEXP_EXTRACT(TITULOS_DAS_PAGINAS, '([a-z].*?)-')
END

A primeira parte é uma função CASE que verifica se o valor de TITULOS_DAS_PAGINAS é exatamente "Receitas de Casa". Se for o caso, o resultado será "Home". Caso contrário, a expressão avança para a próxima cláusula ELSE, onde será executada a função REGEXP_EXTRACT para extrair uma parte do texto em TITULOS_DAS_PAGINAS que corresponde ao padrão '([a-z].*?)-' .

A expressão regular '([a-z].*?)-' procura por uma sequência que começa com uma letra minúscula [a-z], seguida de qualquer número de caracteres .*? e terminando com um hífen-. Dessa forma, busca-se extrair o texto que vem antes do hífen. Entretanto, há um problema nessa expressão, pois ela só funcionará corretamente se houver um hífen no final do título da página. Se não houver um hífen, a regex não fará uma correspondência e retornará um valor nulo. Isso pode ser resolvido ajustando a expressão regular da seguinte maneira:

CASE 
  WHEN TITULOS_DAS_PAGINAS = "Receitas de Casa" THEN "Home" 
  ELSE REGEXP_EXTRACT(TITULOS_DAS_PAGINAS, '([a-z].*?)(?:-|$)')
END

A mudança foi feita na parte '([a-z].*?)(?:-|$)' faz com que haja uma correspondência caso haja um hífen ou não. . Agora, o (?:-|$) representa uma correspondência com um hífen - ou o final da linha $. Dessa forma, mesmo que não haja um hífen no final, ele irá extrair o texto corretamente.

Espero ter ajudado. Caso tenha dúvidas, não hesite em postar no fórum.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!