Expressões Regulares no Google Analytics

Você sabia que é possível usar expressões regulares no Google Analytics? Este é um tema que eu tinha em mais detalhes no curso de Google Analytics, mas acabei tirando de lá por ser um tanto quanto técnico.

É difícil encontrar quem trabalhe na área e não conheça o Google Analytics, ele é uma ótima ferramenta que o Google oferece para se fazer o acompanhamento de um site. Ele provê estatísticas de visitas, visualizações de páginas, keywords, sites que apontam para o seu site, lugar de onde são os visitantes do site e diversas outras informações.

Igualmente, é difícil encontrar quem trabalha no marketing digital e tem domínio sobre expressões regulares. E com certeza depois de aprender a lidar com elas, o trabalho de análise e criação de relatórios, filtros e segmentos fica muito mais fácil.

expressao regular google analytics

Expressões Regulares

As expressões regulares são mais conhecidas de quem se envolve com ciências exatas, especialmente quando em segmentos como programação, computação ou algoritmos. Particularmente, tive o meu início ainda na Faculdade (UNIFEI), no curso de Ciências da Computação, exatamente.

O papel de uma expressão regular é ser um elemento como de categorização. Por exemplo (mas é um exemplo muito longe da aplicação prática), o conceito “carro” é uma expressão regular para os veículos automotores de 4 rodas. Qualquer modelo ou variação desses, continuará sendo um carro.

Entrando um pouco mais na aplicação prática, a expressão regular pode ser usada para criar uma busca, ou filtro, no Analytics que seja “Todas as URLs com a palavra foo, com ou sem s (plural), ou com a palavra bar, ou com a palavra foobar.”

Aí uma expressão regular pode entrar em cena e fazer esse filtro complexo em uma tabela ou segmento com: (foos?)?(bar)?

(foos?)?(bar)?

Nessa expressão regular, todos os caracteres que não são letras, são operadores especiais expressões regulares. No Analytics você consegue usar 12 operadores principais (até existem mais, mas vou focar nesses 12).

1. Parênteses ()

Os parênteses tem a função de agrupar uma sequência de caracteres (operadores e não-operadores), afim de que um operador seja aplicado sobre toda a sequência neles agrupada. Assim, naquela expressão anterior com o foobar, nesse trecho (foos?)?

  1. Enquanto a primeira interrogação opera apenas sobre o “s” foos?
  2. A segunda, opera sobre toda a sequência (foos?)?

É importante ter em mente esse funcionamento dos parênteses, eles podem ajudar a ampliar a ação de uma expressão regular, sem que ela fique muito extensa. Logo mais, mais exemplos para ficar claro.

2. Interrogação ?

A interrogação traz para a expressão regular a mensagem “pode ter, ou não ter” o elemento anterior. O caso mais fácil de imaginar a aplicação é sobre o plural simples para uma palavra. Novamente, no exemplo anterior “foos?” vai levar a 2 correspondências:

  1. foos: Pode ter o “s”
  2. foo: Pode não ter o “s”

Em uma pesquisa por URLs, por exemplo, se o seu site não está muito bem definido no uso da / ao final das URLs, a pesquisa pode ficar:

/alguma-url/?

Ou seja, a pesquisa é para a URL /alguma-url com ou sem a barra no final.

3. Pipe |

O pipe (essa “barra em pé;” não inclinada) opera como a alternativa “OU.” A busca pelas variações foo ou foos pode ser realizada também com a expressão regular usando o pipe:

foo|foos

Os dados seria filtrados pelas ocorrências contendo “foo” OU “foos.”

Esse é operador mais fácil e prático de se utilizar. De todo esse guia, se você se lembrar pelo menos dele, já será de muita ajuda nos seus relatórios.

Para filtrar os meus posts, por exemplo, apenas das categorias Pro ou Social, eu poderia usar a expressão regular:

/pro/|/social/

E a minha tabela de conteúdo do site listaria apenas as páginas com /pro/ OU /social/ na URL. Para adicionar mais alternativas, basta separar por outros pipes:

/categoria-1/|/categoria-2/|/categoria-3/|/categoria-4/

A expressão regular inicial também poderia ser criada de outra forma usando o Pipe, compare as duas:

(foos?)?(bar)?
(foo|foos)?(bar)?

E pode ainda ser ampliada para:

foo|foos|foobar|bar

Nesta última, está “escrito por extenso” cada uma das alternativas que a expressão regular inicial pode ter correspondência. Muito mais fácil de ler e entender que a primeira versão, mas mais extensa também. As duas terão o mesmo resultado final.

Como disse na apresentação dos parênteses, eles podem diminuir o tamanho de uma expressão, embora isso possa aumentar um pouco a complexidade.

4. Acento Circunflexo ^

A expressão regular é sempre um filtro de correspondência ampla, ou seja, a expressão “e?book” vai ter correspondência com:

  • book
  • ebook
  • facebook
  • books
  • ebooks
  • e por aí vai.

Certamente isso não vai ser útil todas as vezes, como essa expressão acima, onde o objetivo pode ser filtrar apenas por book ou ebook, mas não facebook. Ou seja, precisa começar com book ou ebook. Essa é a função do circunflexo: “(obrigatoriamente) começa com.”

Assim, a expressão precisa ser alterada para:

^e?book

Alternativamente, também vai funcionar assim:

^(ebook|book)

Com o pipe fica mais fácil de ler e entender, não? Começa com o que está dentro do parênteses (que agrupou tudo); e o que está dentro do parênteses é ebook ou book.

5. Cifrão $

No outro lado da história está o cifrão, que opera condicionando “termina aqui.” Digamos que busca anterior seja por ebook ou book, mas não ebooks ou outras continuações. A expressão fica assim:

e?book$

Indicando que o “k” é último elemento, é onde a correspondência acaba. Isso proporciona a criação da correspondência exata com expressão regular. Por exemplo:

^ebook$

É exatamente a palavra ebook, não tem como encontrar outra correspondência. Começa com “e”, segue com “boo” e termina com “k”.

6. Asterísco *

Agora, digamos que você possa ter no relatório ebook escrito com a quantidade errada de o’s, as vezes mais. O asterísco faz a correspondência aceitar mais repetições do elemento anterior. Aí, a expressão:

eboo*k

Vai trazer correspondência para ebok (nenhuma repetição), ebook, eboook, eboooook e assim vai. E também funciona para elementos agrupados:

Ah, lelek( lek)*

Vai ter correspondência com: Ah, lelek; Ah, lelek lek; Ah, lelek lek lek; Ah, lelek lek lek lek …

Agora que você se divertiu 😉 observe como eu deixei o espaço dentro do parênteses, um pequeno e importante detalhe nessa escolha, é a diferença entre o resultado acima, ou, com o espaço fora do parênteses:

Ah, lelek (lek)*

A correspondência ficaria com: Ah, lelek; Ah, lelek lek; Ah, lelek leklek; Ah, lelek lekleklek …

Tenha muita atenção a esses detalhes!

7. Sinal Mais +

O sinal da soma tem o mesmo princípio do asterísco, porém, com o operador mais a repetição é de pelo menos 1 vez. Então, a expressão anterior substituída pelo mais:

eboo+k

Teria a correspondência mínima em 2 o’s, diferente do asterísco que teria correspondência para “ebok,” o operador mais considera pelo menos 1 ocorrência do elemento anterior (ebook, eboook …)

8. Chaves {}

Nem sempre contar infinitamente, como o mais e o asterísco, é a melhor opção, então existe também o caminho para determinar exatamente quantas repetições são esperadas, ou uma faixa (de zero a quantas precisar).

go{2}gle

Essa expressão traz a correspondência exatamente para a palavra “google” – apenas 2 repetições da letra “o” – não mais, não menos. Obrigatoriamente 2 vezes.

Funciona para agrupamento também, como todo outro operador:

Ah, lelek (lek){3}

(E você cantou de novo, não foi?)

E a faixa de repetições pode ser feita indicando a faixa entre chaves:

go{1,4}gle

Nessa expressão, de “gogle” até “goooogle”, todas serão correspondências. Você pode usar de zero até um determinado número também ({0,7}).

9. Ponto .

O ponto é o operador que representa qualquer caracter. Se eu fizer um filtro no relatório de palavras-chave com otimiza..o, eu vou conseguir obter as diferentes variações com as quais as pessoas pesquisam otimização no Google (com cedilha, sem cedilha, com til, sem til).

otimiza..o

A expressão regular vai assumir qualquer caracter no primeiro operador ponto (provavelmente variando entre “c” e “ç”, considerando que ninguém vai pesquisar usando “s”).

O segundo operador vai garantir encontrar o “a” com ou sem o til (~).

Um detalhe adicional para esse operador é que ele é muito útil também quando combinado aos operadores de repetição (asterísco, ponto ou chaves).

Combinado ao asterísco, ele forma a regra base para “Todas as páginas” no Google Tag Manager, por exemplo, que é:

.*

Faça a interpretação dessa expressão regular, veja que o ponto significa “qualquer caracter” e o asterísco representa “repetido nenhuma ou várias vezes” (.* é literalmente qualquer sequência de caracteres, inclusive nenhuma sequência).

Com o operador mais, portanto, isso se torna qualquer sequência com pelo menos 1 caracter:

.+

E essa expressão pode ser usada para encontrar long tails em um relatório de palavras-chave. Para listar apenas termos com mais de 3 palavras, experimente:

.+ .+ .+

Essa expressão vai encontrar qualquer sequência de caracteres que seja separada por 2 espaços em branco obrigatoriamente, portanto, todos os termos com 3 ou mais palavras.

Com as chaves, você vai obter uma sequência determinada de caracteres. A expressão otimiza..o poderia ser re-escrita para:

otimiza.{2}o

O ponto tem um uso mais adequado para quando você não sabe qual caracter pode aparecer no meio do caminho. Digamos, buscar a lista de URLs na categoria /pro/ que tenha a palavra “seo” em alguma parte da URL:

^/pro/(.+)?seo

Como qualquer coisa pode estar escrita, ou nada escrito, antes de “seo” na URL, eu usei (.+)? para representar a ideia “tem alguma coisa, ou começa com seo.” Usar simplesmente o ponto e o asterísco também funcionaria:

^/pro/.*seo

Expressões regulares são assim, várias formas para criar a mesma regra de correspondência.

10. Colchetes []

Os colchetes entram em ação para limitar uma lista de caracteres. Enquanto o ponto significa qualquer caracter, os colchetes podem determinar uma lista específica.

A expressão para otimização pode ser atualizada para:

otimiza[cç][aã]o

Inclusive, também é possível utilizar apenas uma lista com os 4 caracteres e considerando 2 ocorrência de pelo menos 1 dos caracteres dessa lista:

otimiza[cçaã]{2}o

Assim, a expressão assume que apenas os caracteres listados dentro dos colchetes (c, ç, a, ã; em qualquer ordem) serão correspondências e isso irá acontecer 2 vezes. Nessa última expressão, os possíveis resultado seriam:

  • otimização
  • otimizacão
  • otimizacao
  • otimizaçao
  • otimizaçco
  • otimizaaao
  • otimizaaço

Deu para entender a ideia. Consigo fazer uma lista só, porém ela fica mais suscetível à falha. A expressão anterior é mais segura. Porém, como essas variações não seriam prejudiciais, fica valendo.

11. Hífen –

E quando essa lista fica muito extensa, mas é uma sequência, você pode estabelecer essa faixa na lista através do hífen. A maior utilidade que vejo nele é para números, mas funciona para letras também:

  • [a-z]: qualquer caracter do alfabeto, de a a z (não incluí caracteres especiais);
  • [a-zçãõéí]: incluí alguns caracteres especiais para ilustrar 😉
  • [0-9]: qualquer dígito;

Como sempre, é possível combinar os outros operadores para ampliar o uso da lista. Por exemplo, procurar na lista de palavras-chave, àquelas que levam em conta o fator temporal, como o ano (SEO 2017, melhores estratégias 2016 …):

[0-9]{4}

Novamente, várias outras formas podem ser usadas: [0-9]+, 20[0-9]{2}, [0-9][0-9][0-9][0-9] ou outras.

O interessante dessa sequência no colchete é que ela pode ser combinada, ou segmentada:

  • [a-dl-z]: está excluído tudo entre o “d” e o “l”;
  • [a-z0-9]: qualquer letra ou número;
  • [0-37-9]: está excluído do 4 ao 6.
  • [2-8]
  • [f-m]

Fácil: tem uma sequência definida de caracteres que podem aparecer, use os colchetes e o hífen para combinar tudo.

12. Contra-barra \

Por último, e não menos importante, a contra-barra tem o papel de anular a função especial para os caracteres especiais.

Digamos que algumas URLs do seu site usem parâmetros e eles são, tradicionalmente, determinados na URL a partir de uma interrogação:

/checkout/success?id=1234

Levar uma expressão no estilo “success?id=[0-9]+” não vai retornar nenhuma delas. Por que não? Porque a interrogação opera como a condição “pode ter, ou pode não ter, o caracter anterior.” Essa expressão iria retornar as URLs com “success” escrito com 1, ou 2 letras “s”, mas nenhuma com interrogação.

A contra-barra entra para “tirar os poderes” de um caracter especial. Aí, a nova expressão pode ser:

success\?id=[0-9]+

Ela não é considerada como um caracter a ser correspondido pela expressão, apenas anula a funcionalidade de um operador, fazendo com que ele seja considerado simplesmente como o caracter.

Este é mais um detalhe importante a se observar ao escrever as expressões regulares, se você quer a correspondência para um caracter especial, precisa usar a contra-barra junto dele.

Onde Usar Expressões Regulares no Google Analytics

expressao regular google analytics

O mais comum, como na imagem acima, é usar diretamente em uma tabela de algum relatório para fazer uma pesquisa refinada sobre ela. Palavras-chave, páginas, origens de tráfego, campanhas … (quase) qualquer relatório.

Segmentos personalizados, filtros para as widgets nas Dashboards, filtros de tráfego, metas. Basicamente, se tem um filtro ou pesquisa, provavelmente vai existir opção de uso de expressões regulares.

Agora que você leu tudo até aqui, você pode chamar de regex para facilitar (REGular EXpressions). Quer mais exemplos e aplicações de RegEx? Peça nos comentários! 😉

Leitura recomendada:

12 thoughts on “Expressões Regulares no Google Analytics

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *