O que são expressões regulares (Regex) e como usá-las em testes A/B?
Publicados: 2021-10-26Expressões regulares (ou regex) podem ser uma ferramenta poderosa no arsenal de qualquer profissional de CRO.
Muitos cientistas de dados, analistas e outros, sem dúvida, os encontraram em algum momento de suas carreiras. Eles podem ser difíceis para aqueles sem conhecimento técnico, mas dominar esses padrões úteis é uma maneira certa de elevar seu programa de experimentação!
Nesta postagem do blog, tentaremos desmistificar as expressões regulares para que você possa começar a usá-las com confiança em seus testes.
Começaremos analisando a estrutura e os diferentes tipos de expressões regulares. Em seguida, mostramos alguns exemplos de expressões regulares que você pode usar e como implementar esses padrões em várias partes do teste A/B. Por fim, analisamos algumas maneiras de usá-las no aplicativo Convert Experiences.
- O que é Regex?
- Como você pode escrever, testar e depurar expressões regulares?
- Como escrever Regex
- Caracteres Básicos de Expressão Regular
- Quantificadores
- Caracteres especiais
- Classes de personagens
- Caracteres Básicos de Expressão Regular
- Como testar expressões regulares
- Como depurar Regex
- Como usar Regex em JavaScript
- Exemplo de Método 1
- Exemplo de Método 2
- Como escrever Regex
- Por que precisamos de Regex em testes A/B?
- Como usar Regex em testes A/B?
- Caso de Uso Regex: Interface de Expressão Regular do Convert com Checker
- Como usar expressões regulares no aplicativo Convert Experiences (com exemplos)
- 1. Área do Site com Regex
- 2. Audiências com Regex
- 3. Objetivos com Regex
- 4. Regex em sites ativos
- Erros comuns a serem evitados ao usar Regex
- 1. Incluindo os caracteres inicial e final
- 2. Incluindo uma barra
- 3. Excedendo o limite de caracteres
- 4. Executando experiências simultâneas na mesma página
O que é Regex?
As expressões regulares são como uma linguagem em miniatura amplamente usada, permitindo que as pessoas correspondam a padrões complexos que, de outra forma, levariam muitas horas de pesquisa.
Eles têm uma estrutura alfanumérica e vêm com seu próprio conjunto de símbolos como colchetes { } parênteses ( ), asteriscos (*), pontos de interrogação (?), colchetes de abertura ([) colchetes de fechamento (]), etc.
Se você está um pouco familiarizado com o regex abaixo, então este é o artigo certo para você.
/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[az]{2,6}\b( [-a-zA-Z0-9@:%_\+.~#()?&//=]*)/
Como você pode escrever, testar e depurar expressões regulares?
Agora, vamos mostrar o que é possível com expressões regulares. Primeiro, vamos dar uma olhada em algumas maneiras de criar seus próprios regexes complexos do zero!
Como escrever Regex
Para construir sua primeira expressão regular, você deve usar uma sintaxe específica, ou seja, caracteres especiais (metacaracteres) e regras de construção. Por exemplo, a seguir está uma expressão regular simples que corresponde a qualquer número de telefone de 10 dígitos, no padrão nnn-nnn-nnnn:
\d{3}-\d{3}-\d{4}
Você pode começar a escrever a sintaxe específica por conta própria (e cometer muitos erros até ter um padrão de regex validado) ou usar um dos geradores de regex disponíveis que existem. Um dos mais amigáveis e fáceis de usar é o Regex Generator.
Basta colar uma amostra de texto que você deseja corresponder usando uma regex (como exemplo, usei a URL do Convert www.convert.com abaixo) e, em seguida, selecione diferentes partes do texto nas quais você deseja criar a regex.
É isso! Tão simples.
O padrão regex está então pronto para ser usado:
w+\.[a-zA-Z]+\.com
Outro exemplo pode ser inserir um endereço de e-mail de suporte e especificar a parte do domínio do endereço para criar o regex:
O regex está pronto para você e agora você pode direcionar todos os endereços de e-mail de suporte das ferramentas que você usa sem precisar copiar e colá-los um por um:
support@[a-zA-Z]+\.com
Se você é mais experiente em tecnologia e deseja escrever esse padrão, pode começar a aprender os caracteres e quantificadores básicos, além de algumas regras de construção.
Caracteres Básicos de Expressão Regular
Aqui está uma “folha de dicas” rápida para aqueles que querem aprender as regras mais comuns de regex.
Quantificadores
E daí se você quiser combinar vários personagens? Você precisa usar um quantificador. Os quantificadores mais importantes são *?+. Eles podem parecer familiares para você, mas não são exatamente os mesmos.
- * corresponde a zero ou mais do que vem antes dele.
- ? corresponde a zero ou um do que vem antes dele.
- + corresponde a um ou mais do que vem antes dele.
Caracteres especiais
Muitos caracteres especiais estão disponíveis para construção de regex. Aqui estão alguns dos mais frequentes:
. | O ponto corresponde a qualquer caractere único. |
\n | Corresponde a um caractere de nova linha (ou combinação CR+LF). |
\t | Corresponde a uma guia (ASCII 9). |
\d | Corresponde a um dígito [0-9]. |
\D | Corresponde a um não dígito. |
\W | Corresponde a um caractere alfanumérico. |
\C | Corresponde a um caractere não alfanumérico. |
\s | Corresponde a um caractere de espaço em branco. |
\S | Corresponde a um caractere que não seja de espaço em branco. |
\ | Use \ para escapar de caracteres especiais. Por exemplo, \. corresponde a um ponto e \\ corresponde a uma barra invertida. |
^ | Corresponde ao início da string de entrada. |
$ | Corresponde ao final da string de entrada. |
Classes de personagens
Você pode agrupar caracteres colocando-os entre colchetes. Dessa forma, qualquer caractere na classe corresponderá a um caractere na entrada.
[abc] | Corresponde a qualquer um de a, b e c. |
[az] | Corresponde a qualquer caractere entre a e z. (ordem ASCII) |
[^abc] | Um acento circunflexo ^ no início do colchete indica “não”. Nesse caso, corresponda a qualquer coisa que não seja a, b ou c. |
[+*?.] | A maioria dos caracteres especiais não tem significado dentro dos colchetes. Esta expressão corresponde literalmente a qualquer um dos +, *, ? ou o ponto. |
Precisa de ajuda para construir suas expressões regulares?
Se você não estiver familiarizado com expressões regulares e quiser aprender mais, recomendamos fazer um curso rápido! Regex é uma ferramenta poderosa que requer apenas um pequeno investimento de tempo para aprender.
Como testar expressões regulares
Agora você tem seu padrão regex pronto, mas gostaria de testar se a sintaxe está correta. Você pode fazer isso manualmente e passar muitas horas lendo as regras de validação. Mathias Bynens tem um ótimo artigo sobre a melhor comparação de muitas expressões regulares: Em busca do regex de validação de URL perfeito. Essa é a maneira louca de seguir em frente.
Mas, felizmente, existem muitos validadores de regex online gratuitos que você pode aproveitar e testar rapidamente suas strings em relação ao padrão de regex que você criou. Podemos recomendar dois deles, RegEx101 e RegExr. As capturas de tela abaixo são deste último, mas sinta-se à vontade para usar qualquer um com o qual se sinta mais confortável.
Simplesmente adicione seu padrão regex no campo Expressão e, em seguida, no campo Texto, adicione qualquer texto que você gostaria de ver se corresponde ao seu padrão. Você pode ver em tempo real quantos dos textos que você digitou estão combinando com o padrão específico.
Esses validadores de regex são muito poderosos!
Como depurar Regex
Testar seu regex é muito mais importante do que depurá-lo. Normalmente, você pode descobrir o que está acontecendo com uma regex com bastante facilidade observando o resultado, mas para ter certeza de que ela faz o que você quer, você deve testar sua regex com todos os casos de borda possíveis. O teste eventualmente esclarecerá o que você realmente deseja fazer e tornará a depuração inútil.
No entanto, se você ainda deseja depurar seu padrão regex, pode digitá-lo em https://regex101.com/. Não apenas permite que você teste seus regexes em um conjunto de amostras, codificando por cores seus grupos de correspondência, mas também fornece uma explicação completa do que está acontecendo nos bastidores.
Tenha em mente, porém, que você terá que consultar a documentação específica para a linguagem de programação específica na qual você está usando o regex. Cada um tem suas restrições específicas. Algumas coisas podem não ter suporte em um idioma específico.
Se você quiser uma experiência mais de “depuração visual”, experimente o Debuggex.
Ele mostra caminhos em seu regex assim:
Como usar Regex em JavaScript
Existem duas maneiras de criar uma expressão regular em JavaScript. Ele pode ser criado com o módulo RegExp ou usando barras ( / ) para incluir o padrão. Barras /…/ informam ao JavaScript que estamos criando uma expressão regular. Eles desempenham o mesmo papel que as aspas para strings.
Em ambos os casos, regexp se torna uma instância do módulo RegExp integrado.
A principal diferença entre essas duas sintaxes é que o padrão usando barras /…/ é totalmente estático, enquanto o outro pode gerar expressões regulares em tempo real.
Exemplo de Método 1
Vejamos o exemplo abaixo do RegExp usado para validar a entrada do usuário e garantir que sua entrada contenha apenas números:
deixe num = 'eu'; let regex = new RegExp('[0-9]'); console.log(regex.test(num)); //isso vai dar falso
Exemplo de Método 2
Vejamos uma expressão simples com a notação literal que procurará uma correspondência exata em uma String. Isso corresponderá à String, realizando uma pesquisa com distinção entre maiúsculas e minúsculas:
let re = "Olá, estude esta noite"; deixe resultado = /hello/.test(re); console.log(resultado); // gera falso
Depois de escrevê-los, existem dois métodos interessantes para testar suas expressões regulares JavaScript:
- RegExp.prototype.test(): para testar se uma correspondência foi encontrada ou não. Ele aceita uma string que testamos em uma expressão regular. Ele retornará true ou false se a correspondência for encontrada.
- RegExp.prototype.exec(): Retorna um array com todos os grupos correspondentes. Ele aceita uma string que testamos em uma expressão regular.
No exemplo a seguir, o padrão /JavaScript/ é testado em relação à string para ver se uma correspondência foi encontrada:
var re = /JavaScript/; var str = "JavaScript"; if (re.test(str)) document.writeln("true") );
No trecho de código a seguir, o método RegExp, exec, procura um padrão específico, /javascript*/, em toda a string (g), ignorando maiúsculas e minúsculas (i):
var re = /javascript*/ig; var str = "cfdsjavascript *(&Yjavascriptjs 888javascript"; var resultadoArray = re.exec(str); while (resultArray) { document.writeln(resultArray[0]); resultadoArray = re.exec(str); }
Por que precisamos de Regex em testes A/B?
O Regex no teste A/B é usado principalmente para segmentação. A segmentação controla quem e onde de qualquer experiência.
Por meio do direcionamento, você informa à sua plataforma de teste quem (quais condições do visitante do site) deve mostrar a experiência e onde (quais URLs específicos) a experiência deve ser executada em seu site.
Ao definir o público, você pode decidir quem verá a experiência. As condições do público podem definir fontes de tráfego, dados geográficos, dados comportamentais, cookies específicos que seus visitantes têm e condições infinitas que você pode especificar.
Ao definir a segmentação por URL, você decide onde a experiência será executada. As condições de segmentação de URL podem incluir vários domínios, subdomínios, parâmetros de consulta e caminhos.
Às vezes, não é viável usar os operadores “correspondência exata” ou “contém” ou “começa com” para direcionar o tráfego para suas experiências. É aqui que entram os regexes.
Estes são 5 públicos de amostra que podem ser excluídos ou incluídos em uma experiência e definidos com regex :
- Visitantes provenientes de campanhas publicitárias que têm um termo comum em seus nomes, mas diferem nos demais (por exemplo, sapatos-compras-celular, anéis-compras-desktop).
- Visitantes usando uma versão específica do navegador (por exemplo, Firefox 3.6.4).
- Visitantes vindos de um site de terceiros como Facebook ou TikTok onde você precisa definir especificamente um grupo de nomes.
- Visitantes que já viram uma promoção.
- Os visitantes que estão logados e seus cookies para controlar o recurso de login têm um identificador exclusivo.
Estes são 5 locais de amostra que você pode querer incluir ou excluir de uma experiência e podem ser definidos com regex :
- Páginas com valores de string de consulta dinâmicos/exclusivos.
- Páginas de destino específicas com termos comuns, mas identificadores exclusivos.
- Páginas de categorias e subcategorias.
- Várias páginas no funil de checkout enquanto os visitantes fluem de uma etapa para a próxima.
- Em todos os lugares, exceto por algumas páginas.
Como usar Regex em testes A/B?
As expressões regulares são úteis em qualquer experiência de URL A/B/MVT/Personalização/A/A/Multipágina/Dividida que se beneficie de correspondências de padrão de URL completas ou parciais.
Podemos usar regex em testes A/B para:
- verificar a estrutura de um URL
- extrair substrings de URLs estruturados
- pesquisar/substituir/reorganizar partes do URL
- dividir um URL em tokens
- encontre uma parte constante da URL.
Tudo isso aparece regularmente ao elaborar uma experiência de conversão.
As correspondências de Regex são úteis quando o caminho, os parâmetros finais ou ambos podem variar nos URLs da mesma página da Web.
Por exemplo, se um usuário vier de um dos muitos subdomínios e seus URLs usarem identificadores de sessão, você poderá usar uma expressão regular para definir o elemento constante de seu URL. Bem prático, certo?
Na Convert, usamos expressões regulares (abreviadas para regex e regexes ) para permitir que você direcione suas experiências para um conjunto específico de páginas ou para URLs complexos ou dinâmicos. Também é usado para definir públicos com múltiplas variáveis que tenham algo em comum, permitindo assim direcionar visitantes específicos do site e em vários outros casos de uso que apresentamos a seguir.
Há muitas informações sobre regexes na Internet e muitas delas não são realmente aplicáveis a como você as usará com o Convert Experiences, por isso criamos este guia de regex para ajudá-lo a começar.
Caso de Uso Regex: Interface de Expressão Regular do Convert com Checker
Existem muitos testadores/validadores de regex que você pode usar antes de trazer suas fórmulas e padrões para a interface do usuário do Convert.
Criamos uma seção de regex (veja abaixo) para simplificar para usuários não familiarizados escrever suas próprias fórmulas de regex e validá-las com nosso verificador.
As correspondências de expressão regular são então avaliadas usando o módulo RegExp regular integrado do JavaScript.
Aqui estão alguns exemplos de como o verificador aparece em diferentes lugares no aplicativo:
Como usar expressões regulares no aplicativo Convert Experiences (com exemplos)
Agora, vamos analisar cada um desses casos de uso e ver alguns exemplos de instâncias em que os regexes são imensamente úteis.
1. Área do Site com Regex
A Área do Site é o local dentro do aplicativo Convert Experiences onde você configura os critérios de segmentação de página que acionam suas experiências.
A configuração de URL mais básica aciona o experimento com base em um URL, por exemplo: “https://www.convert.com“.
Essa configuração é definida automaticamente quando você cria sua experiência pela primeira vez. E é definido para o URL que você insere para criar seu Experimento A/B / Experimento MVT / Personalização ou o URL Original em um Experimento de URL Dividido.
No entanto, você pode alterar essa configuração padrão selecionando um dos vários operadores que a Área do Site fornece para acionar sua experiência.
Um dos operadores é chamado de “Matches Regex” e outro é chamado de “Não corresponde exatamente ao regex”.
Você pode usar essas duas opções para definir as páginas em que deseja executar suas experiências do Convert quando nenhum outro operador puder ser útil para aplicar as configurações de URL desejadas.
Vamos ver alguns casos de uso para facilitar o entendimento!
Exemplo 1
Digamos que você queira executar uma experiência com estas duas condições:
- Origem do tráfego = Google Adwords
- URL contém prg=ABTEST
Veja como você escreveria o regex em sua área do site:
https://convert.com/\?(?=.*utm_source=google)(?=.*prg=ABTEST).*
Exemplo 2
Digamos que você queira comparar três páginas de destino com uma variante.
As páginas de destino são:
- https://www.convert.com/lp-home
- https://www.convert.com/lp-home-agencies
- https://www.convert.com/lp-home-clients
com a variante sendo https://www.convert.com/lp-semhome/desktop
Neste exemplo, você escreveria o regex em sua área do site assim:
https:\/\/www.convert.com\/lp-home(\/|-agências|-clientes|)
Exemplo 3
Agora, vamos imaginar que seus colegas peçam para você configurar uma experiência em que:
- O tráfego para o original deve ser 0
- O parâmetro de consulta contém utm_bucket=competitor
- O tráfego é dividido 50/50 entre as duas variantes, portanto, quando o tráfego chega a https://convert.com/?utm_bucket=competitor, 50% do tráfego vai para https://convert.com/vs-offerpad/ e o outro 50% vai para https://convert.com/vs-zillow/
Nesse caso, o regex ficaria assim:
https://www.convert.com/([^\?]+)?\?{0,1}(.*)([&,\?]utm_bucket=competitor)(.*)$
Exemplo 4
Outro caso pode ser que você queira testar as condições abaixo:
- O URL da página deve conter /collections/
- O UR da página não deve conter /products/
- O URL da página não deve corresponder exatamente: https://convert.com/collections/
- O parâmetro de consulta de URL não deve conter ?v=t
- O URL original pode ser qualquer página em coleções
Aqui, você precisa combinar regex com públicos para atender a todas as condições. Assim, o regex em sua Área do Site ficará assim:
E não se esqueça de definir o público para excluir visitantes que tenham ?v=t em sua URL.
https://www.convert.com/collections/(?!(.*\/)products)(.*)([^\?]+)?\?{0,1}(.*)$
Exemplo 5
Neste exemplo final, digamos que você queira executar uma experiência de URL dividido em que, quando o tamanho da loja for incluído no URL, você deseja executar o teste e dividir o tráfego entre o original e a variante.
1. O original pode ser qualquer um dos itens abaixo:
https://convert.com/products/shop-size
https://convert.com/collections/new-products-deals/products/shop-size
https://convert.com/collections/fitting/products/shop-size
2. O URL de variação pode ter esta aparência: https://convert.com/products/the-original-fittings
Aqui, este será o seu regex:
2. Audiências com Regex
Outra seção em que você pode aproveitar as expressões regulares no aplicativo Convert Experiences é Audiências.
Uma audiência é um grupo de usuários/visitantes do site que têm algo em comum. Com os públicos, você categoriza os visitantes do seu site em grupos com base em critérios específicos, como localização, dispositivo usado para acessar o site, hora do dia, página de destino ou qualquer outro comportamento do usuário.
Os visitantes de um subgrupo diferente provavelmente se comportarão ou comprarão da mesma maneira. Você pode criar públicos especificando as condições que permitem ao Convert decidir para qual público um visitante está qualificado e executar o teste ou variação correto.
Só oferecemos suporte a regex em um dos 3 tipos de público que fornecemos, Segmentação.
Ao selecionar esse tipo de público, estas condições ficam disponíveis:
Exemplo
Digamos que você queira executar uma experiência direcionada aos visitantes do site cuja página de destino consiste em um termo comum como “produtos”. Nesse caso, você selecionaria a condição “URL da página” na lista à esquerda e, em seguida, “Corresponde ao Regex” como seu operador.
E você está feito!
3. Objetivos com Regex
Para acompanhar as conversões de meta para suas experiências, você precisa especificar os URLs da página em que deseja registrar a conversão. As Experiências de conversão permitem inserir URLs, padrões de página ou expressões regulares (regex) específicos das páginas em que você deseja registrar a conversão de meta.
Exemplo
Digamos que seu objetivo seja verificar quantos usuários acessam uma determinada página do seu site.
Nesse caso, você precisa definir o tipo de meta como “Visitar uma página específica” e inserir o URL da página que os usuários precisam visitar para registrar a conversão:
E é assim que seu regex se parece:
https://convert.com/$1/privacy/?$3
4. Regex em sites ativos
O Convert suporta curingas em suas configurações de “Sites Ativos”.
Por exemplo, se você deseja incluir todos os subdomínios em “domain.com”, você deve configurar a entrada “Active Domain” assim: “ http://*.domain.com “.
Erros comuns a serem evitados ao usar Regex
Não é suficiente definir sua regex para sua segmentação de URL uma vez e depois ignorá-la. A limpeza e as verificações regulares são necessárias para garantir que as páginas/públicos/objetivos corretos estejam continuamente nos experimentos corretos.
Aqui estão os principais erros que vemos frequentemente em nossos tíquetes de suporte:
1. Incluindo os caracteres inicial e final
Se você incluir os caracteres inicial e final (^ e $), qualquer URL que inclua texto antes ou depois do padrão não será correspondido.
Evite usá-los.
É muito comum que os URLs incluam strings de consulta no final, como o parâmetro UTM que é adicionado aos URLs para fins de rastreamento.
Um exemplo disso seria:
https://www.convert.com/?utm_campaign=ads
2. Incluindo uma barra
Uma barra (/) no final da URL geralmente é opcional.
Se sua regex incluir esse caractere no final, uma visita ao mesmo URL, mas sem a barra, não corresponderá. É melhor não incluir esse caractere de barra final.
3. Excedendo o limite de caracteres
Há um limite de 750 caracteres para todas as nossas regras de segmentação de regex. Se você ultrapassar esse limite, não haverá nenhum erro para alertá-lo sobre o problema (mesmo que eu acredite que esse limite não possa ser alcançado facilmente).
4. Executando experiências simultâneas na mesma página
Se você tentar executar vários experimentos na(s) mesma(s) página(s) simultaneamente, haverá uma colisão sobre qual experimento um visitante deve participar e quais alterações devem ser aplicadas primeiro.
Por isso, você deve ter cuidado com a segmentação por URL regex. Se você segmentar a mesma página com as regras de segmentação de mais de um teste A/B, será necessário usar estas instruções para evitar a colisão.
Se você está procurando ajuda para entender expressões regulares ou com o direcionamento de URL de suas experiências de conversão, nossa equipe de suporte está pronta para responder às suas perguntas. Você pode entrar em contato conosco a qualquer momento através do bate-papo no aplicativo. Ficaremos felizes em fornecer uma visão geral e mostrar alguns exemplos para que você possa começar a usar regex com confiança em seus testes!