Nov 16 2008
l’operatore OR nei report
Una delle domande che mi viene rivolta più spesso è come si faccia a immettere due o più parole nella casellina di ricerca a fianco del menu a tendina “contenente / tranne”. L’inserimento di spazi, virgole e segni più infatti non sortisce gli effetti desiderati, e spesso non sortisce proprio nessun effetto se non quello di azzerare i dati mostrati. Se stiamo guardando l’elenco delle pagine e vogliamo dire a Google Analytics di mostrare le pagine che nell’url contengono la parola “cane” OPPURE la parola “gatto” l’unico modo possibile è inserire una espressione regolare.
La notizia buona è che l’espressione equivalente a un semplice “questo oppure questo” è molto facile, quella cattiva è che per esigenze leggermente più avanzate è necessario addentrarsi nelle espressioni regolari. Ma affrontiamo una questione alla volta, cercando di non complicare troppo la questione.
L’operatore booleano OR viene reso con il segno pipe ( il segno | che si trova facendo SHIFT + \ nella tastiera italiana), per cui per ottenere il risultato menzionato precedentemente si inserirà l’espressione
cane|gatto
Questo tipo di espressione funziona ovviamente sia nel caso si stia usando il menu a tendina impostato su “contenente” sia su “tranne”. Quello che invece non esiste è l’operatore booleano AND. O meglio, non esiste nella sintassi delle espressioni regolari e non si tratta di un limite di GA. Le espressioni regolari infatti nascono per intercettare porzioni di dati, tipicamente testuali; non si può fare una regular expression che cerca “cane E gatto” in un testo, bisogna scrivere una espressione regolare più complicata. Devo essere sincero, nonostante regolarmente io stesso mi ponga questa domanda, almeno finché non avrà iniziato e finito la lettura di Mastering Regular Expression della O’Really l’unica sensata (benché non elegantissima) che ho trovato è questa:
cane(.*)gatto|gatto(.*)cane
che in italiano significa “trova qualsiasi riga in cui ci sia la parola cane e gatto inframmezzate da qualsiasi cosa, oppure gatto e cane inframmezzate da qualsiasi cosa”.
Ciao Marco,
propongo questa espressione:
(cane.*|gatto.*){2}
E’ meno precisa della tua (ad esempio trova anche “gatto gatto” e “cane cane”), ma se le stringhe da cercare sono più di 2 rimane più semplice 🙂
grandissimo! testata e funziona, ma non avevo dubbi 🙂
Forse così cattura anche “cane cane cane” 😀
(cane.*|gatto.*){2,}