Cosa sono le espressioni regolari (Regex) e come usarle nei test A/B?
Pubblicato: 2021-10-26Le espressioni regolari (o regex) possono essere un potente strumento nell'arsenale di qualsiasi professionista CRO.
Molti data scientist, analisti e altri, senza dubbio, li hanno incontrati ad un certo punto della loro carriera. Possono essere difficili per chi non ha conoscenze tecniche, ma padroneggiare questi schemi utili è un modo sicuro per elevare il tuo programma di sperimentazione!
In questo post del blog, cercheremo di demistificare le espressioni regolari in modo che tu possa iniziare a usarle con sicurezza nei tuoi test.
Inizieremo analizzando la struttura e i diversi tipi di espressioni regolari. Ti mostriamo quindi alcuni esempi di espressioni regolari che potresti voler utilizzare e come implementare questi modelli in varie parti del test A/B. Infine, esaminiamo alcuni modi in cui possono essere utilizzati nell'app Converti esperienze.
- Cos'è Regex?
- Come puoi scrivere, testare ed eseguire il debug di espressioni regolari?
- Come scrivere Regex
- Caratteri di base delle espressioni regolari
- Quantificatori
- Personaggi speciali
- Classi di personaggi
- Caratteri di base delle espressioni regolari
- Come testare le espressioni regolari
- Come eseguire il debug di espressioni regolari
- Come utilizzare Regex in JavaScript
- Metodo 1 Esempio
- Metodo 2 Esempio
- Come scrivere Regex
- Perché abbiamo bisogno di Regex nei test A/B?
- Come utilizzare Regex nei test A/B?
- Caso d'uso di Regex: interfaccia di espressione regolare di Convert con Checker
- Come utilizzare le espressioni regolari nell'app Converti esperienze (con esempi)
- 1. Area del sito con Regex
- 2. Pubblico con Regex
- 3. Gol con Regex
- 4. Regex nei siti Web attivi
- Errori comuni da evitare quando si utilizza Regex
- 1. Compresi i caratteri di inizio e fine
- 2. Includere una barra in avanti
- 3. Superamento del limite di caratteri
- 4. Esecuzione di esperimenti simultanei sulla stessa pagina
Cos'è Regex?
Le espressioni regolari sono come un linguaggio in miniatura ampiamente utilizzato, che consente alle persone di abbinare schemi complessi che altrimenti richiederebbero molte ore di ricerca.
Hanno una struttura alfanumerica e sono dotati di una propria serie di simboli come parentesi { } parentesi ( ), asterischi (*), punti interrogativi (?), parentesi aperte ([) parentesi chiuse (]), ecc.
Se hai un po' di familiarità con l'espressione regolare di seguito, questo è l'articolo giusto per te.
/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[az]{2,6}\b( [-a-zA-Z0-9@:%_\+.~#()?&//=]*)/
Come puoi scrivere, testare ed eseguire il debug di espressioni regolari?
Ora, ti mostriamo cosa è possibile fare con le espressioni regolari. Per prima cosa, daremo un'occhiata ad alcuni modi in cui puoi creare le tue espressioni regolari complesse da zero!
Come scrivere Regex
Per creare la tua prima espressione regolare, devi utilizzare una sintassi specifica, ovvero caratteri speciali (metacaratteri) e regole di costruzione. Ad esempio, la seguente è una semplice espressione regolare che corrisponde a qualsiasi numero di telefono di 10 cifre, nel modello nnn-nnn-nnnn:
\d{3}-\d{3}-\d{4}
Puoi iniziare a scrivere tu stesso la sintassi specifica (e fare molti errori fino a quando non hai un modello regex convalidato) o utilizzare uno dei generatori di espressioni regolari disponibili. Uno dei più intuitivi e facili da usare è il Regex Generator.
Basta incollare un esempio di testo che si desidera abbinare utilizzando un'espressione regolare (ad esempio, ho usato l'URL di Convert www.convert.com di seguito), quindi selezionare diverse parti del testo su cui si desidera creare l'espressione regolare.
Questo è tutto! Così semplice.
Il modello regex è quindi pronto per essere utilizzato:
w+\.[a-zA-Z]+\.com
Un altro esempio potrebbe essere inserire un indirizzo email di supporto e specificare la parte di dominio dell'indirizzo su cui costruire la regex:
La regex è pronta per te e ora puoi indirizzare tutti gli indirizzi email di supporto degli strumenti che usi senza doverli copiare e incollare uno per uno:
support@[a-zA-Z]+\.com
Se sei più esperto di tecnologia e vuoi scrivere tu stesso quel modello, puoi iniziare a imparare i caratteri e i quantificatori di base, oltre ad alcune regole di costruzione.
Caratteri di base delle espressioni regolari
Ecco un rapido "cheat sheet" per quelli di voi che vogliono imparare le regole più comuni di regex.
Quantificatori
E se volessi abbinare più personaggi? Devi usare un quantificatore. I quantificatori più importanti sono *?+. Potrebbero sembrarti familiari, ma non sono esattamente la stessa cosa.
- * corrisponde a zero o più di ciò che lo precede.
- ? corrisponde a zero o a uno di ciò che lo precede.
- + corrisponde a uno o più di ciò che lo precede.
Personaggi speciali
Sono disponibili molti caratteri speciali per la creazione di espressioni regolari. Ecco alcuni dei più frequenti:
. | Il punto corrisponde a qualsiasi singolo carattere. |
\n | Corrisponde a un carattere di nuova riga (o combinazione CR+LF). |
\t | Corrisponde a una scheda (ASCII 9). |
\d | Corrisponde a una cifra [0-9]. |
\D | Corrisponde a una non cifra. |
\w | Corrisponde a un carattere alfanumerico. |
\W | Corrisponde a un carattere non alfanumerico. |
\S | Corrisponde a uno spazio vuoto. |
\S | Corrisponde a un carattere non di spazi bianchi. |
\ | Usa \ per sfuggire ai caratteri speciali. Per esempio, \. corrisponde a un punto e \\ corrisponde a una barra rovesciata. |
^ | Corrispondenza all'inizio della stringa di input. |
$ | Corrispondenza alla fine della stringa di input. |
Classi di personaggi
Puoi raggruppare i caratteri inserendoli tra parentesi quadre. In questo modo, qualsiasi carattere della classe corrisponderà a un carattere nell'input.
[abc] | Abbina uno qualsiasi di a, b e c. |
[az] | Abbina qualsiasi carattere tra a e z. (ordine ASCII) |
[^abc] | Un accento circonflesso ^ all'inizio della parentesi quadra indica “non”. In questo caso, abbina qualcosa di diverso da a, b o c. |
[+*?.] | La maggior parte dei caratteri speciali non ha significato all'interno delle parentesi quadre. Questa espressione corrisponde letteralmente a qualsiasi di +, *, ? o il punto. |
Hai bisogno di aiuto per costruire le tue espressioni regolari?
Se non hai dimestichezza con le espressioni regolari e vorresti saperne di più, ti consigliamo vivamente di seguire un rapido corso accelerato! Regex è uno strumento potente che richiede solo un piccolo investimento di tempo per imparare.
Come testare le espressioni regolari
Ora hai il tuo pattern regex pronto ma vorresti verificare se la sintassi è corretta. Puoi farlo manualmente e passare molte ore a leggere le regole di convalida. Mathias Bynens ha un ottimo articolo sul miglior confronto di molte espressioni regolari: Alla ricerca della perfetta espressione regolare di convalida degli URL. Questo è il modo folle di andare avanti.
Ma per fortuna, ci sono molti validatori regex online gratuiti che puoi sfruttare e testare rapidamente le tue stringhe rispetto al modello regex che hai creato. Possiamo consigliarne due, RegEx101 e RegExr. Gli screenshot seguenti provengono da quest'ultimo, ma sentiti libero di usare quelli con cui ti senti più a tuo agio.
Aggiungi semplicemente il tuo modello regolare nel campo Espressione, quindi, nel campo Testo, aggiungi qualsiasi testo che vorresti vedere se corrisponde al tuo modello. Puoi vedere al volo quanti dei testi che hai inserito corrispondono allo schema specifico.
Questi validatori regex sono molto potenti!
Come eseguire il debug di espressioni regolari
Testare la tua espressione regolare è molto più importante del debug. Di solito puoi capire cosa sta succedendo con una regex abbastanza facilmente guardando il risultato, ma per essere sicuro che faccia quello che intendi, dovresti testare la tua regex con tutti i possibili casi di confine. Il test alla fine chiarirà cosa vuoi veramente fare e renderà inutile il debug.
Tuttavia, se desideri ancora eseguire il debug del tuo pattern regex, puoi digitarlo in https://regex101.com/. Non solo ti consente di testare le tue espressioni regolari su un set di campioni, codificando a colori i tuoi gruppi di corrispondenze, ma ti dà anche una spiegazione completa di cosa sta succedendo sotto il cofano.
Tieni presente, tuttavia, che dovrai fare riferimento alla documentazione specifica per il particolare linguaggio di programmazione in cui stai utilizzando la regex. Ognuno ha le sue particolari restrizioni. Alcune cose potrebbero non essere supportate in una lingua particolare.
Se desideri un'esperienza di "debug visivo" più, prova Debugex.
Mostra i percorsi nella tua espressione regolare in questo modo:
Come utilizzare Regex in JavaScript
Esistono due modi per creare un'espressione regolare in JavaScript. Può essere creato con il modulo RegExp o utilizzando le barre ( / ) per racchiudere il pattern. Le barre /…/ indicano a JavaScript che stiamo creando un'espressione regolare. Svolgono lo stesso ruolo delle virgolette per le stringhe.
In entrambi i casi, regexp diventa un'istanza del modulo RegExp integrato.
La principale differenza tra queste due sintassi è che il modello che utilizza le barre /…/ è completamente statico mentre l'altro può generare espressioni regolari al volo.
Metodo 1 Esempio
Diamo un'occhiata all'esempio seguente di RegExp utilizzato per convalidare l'input dell'utente e garantire che il loro input contenga solo numeri:
lascia num = 'io'; let regex = new RegExp('[0-9]'); console.log(regex.test(num)); //questo produrrà false
Metodo 2 Esempio
Diamo un'occhiata a una semplice espressione con la notazione letterale che cercherà una corrispondenza esatta in una stringa. Questo corrisponderà alla stringa, eseguendo la ricerca con distinzione tra maiuscole e minuscole:
let re = "Ciao Studytonight"; let result = /ciao/.test(re); console.log(risultato); //output falso
Dopo averli scritti, ci sono due metodi interessanti per testare le tue espressioni regolari JavaScript:
- RegExp.prototype.test(): per verificare se è stata trovata o meno una corrispondenza. Accetta una stringa che testiamo rispetto a un'espressione regolare. Restituirà true o false se viene trovata la corrispondenza.
- RegExp.prototype.exec(): restituisce un array con tutti i gruppi corrispondenti. Accetta una stringa che testiamo rispetto a un'espressione regolare.
Nell'esempio seguente, il modello /JavaScript/ viene testato rispetto alla stringa per verificare se viene trovata una corrispondenza:
var re = /JavaScript/; var str = "JavaScript"; if (re.test(str)) document.writeln("true");
Nel seguente frammento di codice, il metodo RegExp, exec, cerca un modello specifico, /javascript*/, nell'intera stringa (g), ignorando il caso (i):
var re = /javascript*/ig; var str = "cfdsjavascript *(&Yjavascriptjs 888javascript"; var resultArray = re.exec(str); while (resultArray) { document.writeln(resultArray[0]); resultArray = re.exec(str); }
Perché abbiamo bisogno di Regex nei test A/B?
Regex nei test A/B viene utilizzato principalmente per il targeting. Il targeting controlla chi e dove di qualsiasi esperienza.
Attraverso il targeting, stai dicendo alla tua piattaforma di test chi (quali condizioni dei visitatori del sito Web) mostrare l'esperienza a e dove (quali URL specifici) l'esperienza dovrebbe essere eseguita sul tuo sito.
Definendo il pubblico, puoi decidere chi vedrà l'esperienza. Le condizioni del pubblico possono definire sorgenti di traffico, dati geografici, dati comportamentali, cookie specifici dei tuoi visitatori e infinite condizioni che puoi specificare tu stesso.
Definendo il targeting per URL, decidi dove verrà eseguita l'esperienza. Le condizioni di targeting degli URL possono includere diversi domini, sottodomini, parametri di query e percorsi.
A volte non è possibile utilizzare gli operatori "corrispondenza esatta" o "contiene" o "inizia con" per raggruppare il traffico verso le tue esperienze. È qui che entrano in gioco le espressioni regolari.
Questi sono 5 segmenti di pubblico di esempio che possono essere esclusi o inclusi in un'esperienza e definiti con regex :
- Visitatori provenienti da campagne pubblicitarie che hanno un termine comune nei loro nomi ma differiscono nel resto (es. scarpe-acquisti-cellulare, anelli-acquisti-desktop).
- Visitatori che utilizzano una specifica versione del browser (es. Firefox 3.6.4).
- Visitatori provenienti da un sito di terze parti come Facebook o TikTok in cui è necessario definire in modo specifico un gruppo di nomi.
- Visitatori che hanno già visto una promozione.
- I visitatori che hanno effettuato l'accesso e i loro cookie per il controllo della funzione di accesso hanno un identificatore univoco.
Queste sono 5 posizioni di esempio che potresti voler includere o escludere da un'esperienza e possono essere definite con regex :
- Pagine con valori di stringa di query dinamici/univoci.
- Pagine di destinazione specifiche con termini comuni ma identificatori univoci.
- Pagine di categoria e sottocategoria.
- Più pagine nella canalizzazione di pagamento mentre i visitatori scorrono da un passaggio all'altro.
- Ovunque tranne poche pagine.
Come utilizzare Regex nei test A/B?
Le espressioni regolari sono utili in qualsiasi esperienza A/B/MVT/Personalizzazione/A/A/URL multipagina/divisa che beneficia di corrispondenze complete o parziali del pattern URL.
Possiamo usare regex nei test A/B per:
- verificare la struttura di un URL
- estrarre sottostringhe da URL strutturati
- cercare/sostituire/riorganizzare parti dell'URL
- dividere un URL in token
- trova una parte costante dell'URL.
Tutti questi si verificano regolarmente durante la stesura di un'esperienza di conversione.
Le corrispondenze regolari sono utili quando il percorso, i parametri finali o entrambi possono variare negli URL per la stessa pagina web.
Ad esempio, se un utente proviene da uno dei tanti sottodomini e i tuoi URL utilizzano identificatori di sessione, puoi utilizzare un'espressione regolare per definire l'elemento costante del tuo URL. Abbastanza utile, giusto?
In Convert, utilizziamo espressioni regolari (abbreviate in regex e regex ) per consentirti di indirizzare le tue esperienze a un insieme specifico di pagine o a URL complessi o dinamici. Viene anche utilizzato per definire segmenti di pubblico con più variabili che hanno qualcosa in comune, consentendo così di indirizzare visitatori specifici del sito Web e in molti altri casi d'uso che presentiamo di seguito.
Ci sono molte informazioni sulle espressioni regolari su Internet e molte non sono realmente applicabili al modo in cui le utilizzerai con Converti esperienze, quindi abbiamo creato questa guida alle espressioni regolari per aiutarti a iniziare.
Caso d'uso di Regex: interfaccia di espressione regolare di Convert con Checker
Esistono molti tester/validatori di espressioni regolari che puoi utilizzare prima di portare le formule e i modelli nell'interfaccia utente di conversione.
Abbiamo progettato una sezione regex (vedi sotto) per rendere semplice per gli utenti non familiari scrivere le proprie formule regex e convalidarle con il nostro controllo.
Le corrispondenze di espressioni regolari vengono quindi valutate utilizzando il modulo RegExp normale integrato di JavaScript.
Ecco alcuni esempi di come appare il checker in diversi punti dell'app:
Come utilizzare le espressioni regolari nell'app Converti esperienze (con esempi)
Ora, esaminiamo ciascuno di questi casi d'uso e vediamo alcuni esempi di casi in cui le espressioni regolari sono estremamente utili.
1. Area del sito con Regex
L'area del sito è il luogo all'interno dell'app Converti esperienze in cui configuri i criteri di targeting della pagina che attivano le tue esperienze.
La configurazione URL più semplice attiva l'esperimento in base a un URL, ad esempio: "https://www.convert.com".
Questa impostazione viene configurata automaticamente quando crei l'esperimento per la prima volta. Ed è impostato sull'URL che inserisci per creare il tuo esperimento A/B/esperimento MVT/personalizzazione o l'URL originale su un esperimento con URL diviso.
Tuttavia, puoi modificare questa configurazione predefinita selezionando uno dei tanti operatori che l'Area del Sito prevede per attivare la tua esperienza.
Uno degli operatori si chiama "Corrisponde a regex" e un altro si chiama "Non corrisponde esattamente a regex".
Puoi utilizzare queste due opzioni per definire le pagine in cui desideri eseguire le tue esperienze di conversione quando nessun altro operatore può essere utile per applicare le impostazioni URL desiderate.
Vediamo alcuni casi d'uso per renderlo più facile da capire!
Esempio 1
Supponiamo che tu voglia eseguire un'esperienza con queste due condizioni:
- Sorgente di traffico = Google Adwords
- L'URL contiene prg=ABTEST
Ecco come scriveresti la regex nella tua area del sito:
https://convert.com/\?(?=.*utm_source=google)(?=.*prg=ABTEST).*
Esempio 2
Supponiamo che tu voglia confrontare 3 pagine di destinazione con una variante.
Le landing page sono:
- https://www.convert.com/lp-home
- https://www.convert.com/lp-home-agency
- https://www.convert.com/lp-home-clients
con la variante https://www.convert.com/lp-semhome/desktop
In questo esempio, scriveresti la regex nella tua area del sito in questo modo:
https:\/\/www.convert.com\/lp-home(\/|-agenzie|-client|)
Esempio 3
Ora, immaginiamo che i tuoi colleghi ti chiedano di organizzare un'esperienza in cui:
- Il traffico verso l'originale dovrebbe essere 0
- Il parametro della query contiene utm_bucket=concorrente
- Il traffico è suddiviso 50/50 tra le due varianti, quindi quando il traffico arriva a https://convert.com/?utm_bucket=competitor, il 50% del traffico va a https://convert.com/vs-offerpad/ e l'altro Il 50% va a https://convert.com/vs-zillow/
In questo caso, la regex sarebbe simile a questa:
https://www.convert.com/([^\?]+)?\?{0,1}(.*)([&,\?]utm_bucket=concorrente)(.*)$
Esempio 4
Un altro caso potrebbe essere quello di voler testare le condizioni seguenti:
- L'URL della pagina deve contenere /raccolte/
- La pagina UR non deve contenere /prodotti/
- L'URL della pagina non deve corrispondere esattamente: https://convert.com/collections/
- Il parametro Query URL non deve contenere ?v=t
- L'URL originale potrebbe essere qualsiasi pagina nelle raccolte
Qui, devi combinare la regex con il pubblico per soddisfare tutte le condizioni. Pertanto, la regex nella tua area del sito sarà simile a questa:
E non dimenticare di definire il pubblico per escludere i visitatori che hanno ?v=t nel loro URL.
https://www.convert.com/collections/(?!(.*\/)products)(.*)([^\?]+)?\?{0,1}(.*)$
Esempio 5
In questo ultimo esempio, supponiamo che tu voglia eseguire un'esperienza URL diviso in cui, quando la dimensione del negozio è inclusa nell'URL, desideri eseguire il test e dividere il traffico tra l'originale e la variante.
1. L'originale può essere uno dei seguenti:
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. L'URL della variante potrebbe essere simile al seguente: https://convert.com/products/the-original-fittings
Ecco, questa sarà la tua regex:
2. Pubblico con Regex
Un'altra sezione in cui puoi sfruttare le espressioni regolari nell'app Converti esperienze è Pubblico.
Un pubblico è un gruppo di utenti/visitatori di siti Web che hanno qualcosa in comune. Con i segmenti di pubblico, classifichi i visitatori del tuo sito Web in gruppi in base a criteri specifici come la posizione, il dispositivo utilizzato per accedere al sito, l'ora del giorno, la loro pagina di destinazione o qualsiasi altro comportamento degli utenti.
È probabile che i visitatori di un sottogruppo diverso si comportino o acquistino allo stesso modo. Puoi creare segmenti di pubblico specificando le condizioni che consentono a Convert di decidere per quale pubblico è idoneo un visitatore ed eseguire il test o la variazione corretti.
Supportiamo la regex solo in uno dei 3 tipi di pubblico che forniamo, segmentazione.
Quando selezioni questo tipo di pubblico, diventano disponibili queste condizioni:
Esempio
Supponiamo che tu voglia eseguire un'esperienza mirata ai visitatori del sito web la cui pagina di destinazione è costituita da un termine comune come "prodotti". In questo caso, selezionare la condizione "URL pagina" dall'elenco a sinistra, quindi "Corrisponde a Regex" come operatore.
E hai finito!
3. Gol con Regex
Per monitorare le conversioni all'obiettivo per le tue esperienze, devi specificare gli URL della pagina in cui desideri registrare la conversione. Converti esperienze ti consente di inserire URL, pattern di pagina o espressioni regolari (regex) specifici delle pagine in cui desideri registrare la conversione all'obiettivo.
Esempio
Supponiamo che il tuo obiettivo sia controllare quanti utenti accedono a una determinata pagina del tuo sito web.
In questo caso, devi definire il tipo di obiettivo come "Visita una pagina specifica" e inserire l'URL della pagina che gli utenti devono visitare per registrare la conversione:
Ed ecco come appare la tua espressione regolare:
https://convert.com/$1/privacy/?$3
4. Regex nei siti Web attivi
Converti supporta i caratteri jolly nelle impostazioni dei "Siti Web attivi".
Ad esempio, se desideri includere tutti i sottodomini in "domain.com", devi impostare la voce "Active Domain" in questo modo: " http://*.domain.com ".
Errori comuni da evitare quando si utilizza Regex
Non è sufficiente definire una volta la tua regex per il targeting dell'URL e poi ignorarla. Sono necessari una pulizia e un controllo regolari per garantire che le pagine/il pubblico/gli obiettivi giusti siano continuamente negli esperimenti giusti.
Ecco i principali errori che vediamo spesso comparire nei nostri ticket di supporto:
1. Compresi i caratteri di inizio e fine
Se includi i caratteri di inizio e fine (^ e $), qualsiasi URL che includa testo prima o dopo il pattern non verrà abbinato.
Evita di usarli.
È molto comune che gli URL includano stringhe di query alla fine, come il parametro UTM che vengono aggiunti agli URL a scopo di monitoraggio.
Un esempio di questo sarebbe:
https://www.convert.com/?utm_campaign=ads
2. Includere una barra in avanti
Una barra (/) alla fine dell'URL è generalmente facoltativa.
Se la tua espressione regolare include quel carattere alla fine, una visita allo stesso URL ma senza la barra in avanti non corrisponderebbe. È meglio non includere quel carattere di barra in avanti finale.
3. Superamento del limite di caratteri
C'è un limite di 750 caratteri per tutte le nostre regole di targeting per espressioni regolari. Se superi questo limite, non verrà generato alcun errore per avvisarti del problema (anche se credo che questo limite non possa essere raggiunto facilmente).
4. Esecuzione di esperimenti simultanei sulla stessa pagina
Se provi a eseguire più esperimenti sulla stessa pagina o sulle stesse pagine contemporaneamente, ciò porta a una collisione su quale esperimento dovrebbe partecipare un visitatore e quali modifiche applicare per prime.
Per questo motivo, dovresti fare attenzione con il targeting dell'URL regolare. Se scegli come target la stessa pagina con le regole di targeting di più di un test A/B, devi utilizzare queste istruzioni per prevenire la collisione.
Se stai cercando aiuto per comprendere le espressioni regolari o per il targeting degli URL delle tue esperienze di conversione, il nostro team di supporto è pronto a rispondere alle tue domande. Puoi raggiungerci in qualsiasi momento tramite la chat in-app. Saremo lieti di fornire una panoramica e mostrarti alcuni esempi in modo che tu possa iniziare a utilizzare regex con sicurezza nei tuoi test!