Kako bolje filtrirati i razumeti podatke u Google Analitici — Uvod u regularne izraze

Najbolji način da grupišete i filtrirate podatke u Google analitici je korišćenjem regularnih izraza. Sledi uvod sa primerima kako ih možete koristiti.

Dino Kukić - 1. Februar, 2017.

Usled lakoće korišćenja i pre svega činjenice da je besplatna, u nekim krugovima je Google analitika postala i sinonim za web analitiku uopšte. Međutim, iako besplatna, Google analitika je poprilično moćan alat koji vam može pomoći da bolje razumete interakciju korisnika sa vašim web sajtom i samim tim unapredite proizvod ili uslugu koju pružate.

Ovaj tekst vam može biti koristan ukoliko ste već imali iskustva sa interfejsom i izveštajima u GA, makar i na elementarnom nivou, a želite da se bavite nešto kompleksnijim opcijama koje ovaj servis nudi.

Šta su regularni izrazi

Verovatno ste već pokušavali da filtrirate nešto, napravite cilj i samim tim se susreli sa sledećim:

filtriranje koriscenjem regex ili exact

Među opcijama za filtriranje osim Exact postoji i RegEx. RegEx je skraćenica za Regular Expression što u prevodu znači regularni izraz. Regularni izrazi isprva mogu delovati zastrašujuće, ali kroz vežbu i korišćenje ćete ih vrlo brzo savladati.

Neki od razloga zašto bi trebalo da koristite regularne izraze u Google analitici uključuju mogućnost postavljanja složenih ciljeva, složenih “levaka” (eng. funnel), isključenje određenog raspona IP adresa iz izveštaja, kao i filtriranje podataka na osnovu kompleksnih obrazaca u GA izveštajima.

Regularni izrazi služe za grupisanje nizova karaktera prema određenom obrascu.

Pre nego što krenemo dublje da pričamo o samim karakterima i šta oni predstavljaju, bitno je znati jednu stvar kad su u pitanju regularni izrazi. U osnovi funkcionišu tako što prema definisanim pravilima grupišu što je više moguće stranica. Ovo znači da se ovim principom vi trudite da isključite stranice iz izraza, a ne uključite. Kako bi ovo bilo jasnije pogledajte sledeći primer.

Recimo da je neko spomenuo vaš sajt na svom blogu koji je parkiran na besplatnom poddomenu servisa Blogger — blogspot.com i postavio link do vašeg sajta. U zavisnosti od države iz koje neko čita taj blog, domen će biti drugačiji. Umesto .com tu će stajati nacionalni domen te države, kao na primer .rs, .dk, .de i sl. Samim tim, kada korisnik klikne na link i poseti vaš sajt taj domen sa kojeg je on došao, odnosno Source će biti drugačiji.

Kako bismo sve te posete grupisali, ne moramo listati sve moguće domene niti pisati regularan izraz poput “blogspot\.(rs|dk|de)” već jednostavno staviti blogspot. Međutim, ovim putem mi bismo takođe uključili u izveštaj sve posete koje bi nekim slučajem došle sa pretraživača www.searchblogspot.com te bismo to morali naknadno isključiti izrazom (^search)blogspot.

Ako vam ovo deluje nepoznato i komplikovano, već u sledećem pasusu objasnićemo šta tačno znače ovi primeri.

Kako koristimo regularne izraze

[ ] ” — uglaste zagrade vam pomažu da napravite listu karaktera od kojih bi jedan trebalo da se nađe u nizu karaktera.

Ako bacimo pogled u analitiku jednog eCommerce sajta koji ima više jakni na prodaju, a jedina razlika u URL-ovima je to što imaju broj pored, npr.

http://primerprodavnica.com/muskarci/jakne/jakna-1
http://primerprodavnica.com/muskarci/jakne/jakna-2

Recimo da takvih proizvoda ima 6 (do /jakna-6). Želimo da uradimo A/B testiranje, i na prva 3 proizvoda dugme za kupovinu se nalazi na drugom mestu. Jedan od načina na koji bismo mogli izdvojiti prve 3 jakne regularnim izrazom bi bio:

/jakna-[123]/
/jakna-[456]/

Ovo grupisanje ćemo iskoristiti da uporedimo dve grupe stranica i vidimo koja pozicija dugmeta za kupovinu jakne je najoptimalnija, odnosno koja dovodi do najviše konverzija.

” — crtica je prilično intuitivna i omogućava vam da napravite raspon. Npr. ako bismo hteli da grupišemo sve što sadrži jedan od brojeva od 0 do 9 to bi izgledalo ovako: [0-9]. Ako bismo se vratili na prethodan primer i hteli da izaberemo iste 3 jakne prema istom pravilu, regularni izraz bi izgledao ovako:

/jakna-[1-3]/
/jakna-[4-6]/

Naravno u ovom konkretnom slučaju nećemo uštediti vremena ni karaktera, ali na ovaj način možete izvući i mnogo više:

[0-9] — grupiše sve pojave jednog od brojeva od 0 do 9
[a-z] — grupiše sve pojave jednog od malih slova od a do z
[A-Z] — grupiše sve pojave jednog od velikih slova od a do z
[a-Z] — grupiše sve pojave jednog, malog ili velikog, slova u engleskom alfabetu

. ” — tačka zamenjuje bilo koji jedan karakter, recimo .uk bi bilo ispravno i za kuk, luk, puk, i tako dalje. Kad bismo hteli da izbacimo IP adrese čiji poslednji broj može biti od 0 do 9 i to bi izgledalo ovako:

192\.168\.0\..

Naravno ova tačka znači da bi izraz bio tačan i za 192.168.0.u, ali pošto je pojava nečeg takvog ovde nemoguća, sasvim je bezbedno koristiti i ovakav izraz.

* ” — zvezdica je jedan od karaktera koji se često koristi u pogrešnom kontekstu, jer se obično misli da ona odgovara “svemu ostalom što se dalje nalazi”, ali nije tako. U principu, njena uloga je da grupiše bilo koji broj ponavljanja prethodnog karaktera, uključujući i 0. Tako bi na primer regularni izraz ku*l, bio ispravan za kul, kuuuul, ali i kl.

.* “ — tačka i zvezdica naravno ne predstavljaju karakter za sebe, ali se često koriste u kombinaciji pa su stoga vredni pomena. Ako zamislimo da imamo pristup analitici YouTube-a, možda bismo želeli da vidimo koliko ljudi je posetilo Live kanale. URL za live kanale ide https://www.youtube.com/c/ime-kanala/live. Ako želimo sve URL-ove koji se završavaju sa /live, a ne želimo www.youtube.com/live, regularni izraz za to bi bio:

/c/.*/live

Recimo da radimo sa onlajn prodavnicom. Sa jedne strane imamo destinacioni cilj da kad kupac kupi jaknu preusmeri se na stranicu /jakne/hvala-na-kupovini, zatim za majice /majice/hvala-na-kupovini i tako dalje za više kategorija. A sa druge želimo da ipak u izveštaju imamo i ukupan broj takvih transakcija. Regularni izraz za ovaj primer bi izgledao ovako:

/.*/hvala-na-kupovini

? “ — znak pitanja praktično kaže: prethodni karakter nije obavezan. U engleskom jeziku bi primer za to bio kad bismo želeli da izvučemo i englesku i američku varijaciju reči colour, behaviour, favourite i drugih čije američke verzije nemaju slovo u. Tako bi regularan izraz za svaki od ovih bio colou?r odnosno behaviou?r ili favou?rite. Što bi grupisalo i color i colour.

+ “ — plus ima sličnu ulogu kao i znak pitanja, međutim dok ? grupiše nizove gde prethodni karakter postoji ili ne, njegova uloga je da grupiše sve pojave jednog ili više od prethodnog karaktera tj. da li postoji barem jedan prethodno navedeni karakter. Tako ako bi iz prethodnog primera zamenili ? sa +, colou+r, grupisali bi colour, colouur, ali ne i color.

{ } “ — vitičaste zagrade se koriste kako bi se grupisale pojave određenog broja prethodnog karaktera. Tako na primer, izraz a{2} bi se odnosio na dve pojave slova a. Takođe se može odrediti raspon i tako bi a{2,5} značilo da se poslednji karakter tj. u ovom slučaju a pojavljuje barem 2, ali ne više od 5 puta. Tako, ako bi napisali izraz pra{2,5}v grupisali bi reči praav, praaav, praaaav i praaaaav, ali ne i prav ili praaaaaav pošto se a pojavljuje samo jednom odnosno šest puta.

( ) ” — obične zagrade funkcionišu upravo onako kao i u matematici, a to je da grupišu elemente. Prethodno smo rekli da uglastim zagradama možemo da proverimo pojavu jednog od navedenih karaktera, međutim obične zagrade nam dozvoljavaju da proverimo pojavu reči ili bilo kojeg niza karaktera. Opet, ako bi to gledali na primeru jedne onlajn prodavnice koja ima posebne delove za mušku i žensku odeću, tako nešto bi izgledalo ovako:

/(mus|zens)ki/

^ “ — znak za umetanje označava da to što želimo da grupišemo počinje time. Npr. ^luk bi grupisalo sve sledeće: luk, lukovica, lukovic, lukas, itd. Ovaj znak takođe može značiti ne kada bi ga koristili u kombinaciji sa bilo kojim zagradama. Tako bi npr. [^b] bilo istinito za

prodavnica.com/kategorija-a/ , ali ne i za
prodavnica.com/kategorija-b/

$ “ — dolar znak označava da se niz karaktera završava navedenim. Npr. sta$ bi grupisalo sve reči koje se završavaju na -sta kao npr. aktivista, basista, gitarista, i drugo. Intuitivno bi bilo pomisliti da ako bismo hteli da u izveštaju imamo samo početnu stranicu treba samo da stavimo /$, međutim ovo bi zapravo bilo istinito za svaku stranicu koja nema nekih dodatnih ili dinamičkih parametara, jer se u osnovi stranice završavaju sa /.

Pravi izraz koji je istinit samo za početnu stranicu koristi i znak za umetanje i izgleda ovako: ^/$ što u prevodu znači da izraz treba grupiše sve stranice koje počinju i završavaju se znakom / .

| ” — pipe (uspravna linija) kao i u mnogim drugim slučajevima označava ili. Kada je za nešto prosto nemoguće napisati izraz koji će biti istinit za sve stranice koje treba da grupišemo onda jednostavno možete koristiti uspravnu liniju. Na primer kod gore navedenog primera URL-ova sa jaknama regularni izraz može biti:

/jakna-(1|2|3)/$
/jakna-(4|5|6)/$

\ ” — obrnuta kosa crta Vam omogućava da neutrališete jedan karakter regularnog izraza. Jedan od primera bi bio kada biste hteli da isključite svoju IP adresu iz Google analitike kako bi imali vernije podatke ispred sebe. Recimo da vam je IP adresa 192.168.1.254, pošto tačka ima svoju funkciju kao karakter regularnog izraza, filtriranje korišćenjem regularnog izraza bi izgledalo ovako: 192\.168\.1\.254

Ostali karakteri koji Vam mogu koristiti:

\s — razmak
\S — karakter koji nije razmak
\d — broj
\D — nije broj
\w — bilo koji alfanumerički ili _
\W — nije alfanumerički ili _

Filtriranje SPAMa

Jedan od malo naprednijih primera korišćenja regularnih izraza u Google analitici bi bilo filtriranje SPAMa kojem smo svi bili izloženi u prethodnoj godini, najviše poslednjih meseci. Razlika izmedju SPAMa i ostalih poseta se najviše mogla primetiti kad pregledamo “jezik” dimenziju te naš izbor za filtriranje pada upravo na jezike.

filtriranje SPAM-a regularnim izrazom

Rešenja za ovaj problem je po internetu bilo mnogo, ali je većina na koje sam naišao bila bespotrebno komplikovana. Regularni izraz sa slike grupiše i isključuje iz izveštaja sve jezike gde postoji 15 karaktera zaredom. Nijedan kód jezika nema 15 ili više karaktera i na primer za SPAM koji je dolazio do startit.rs, nije bilo nijednog koji je kraći od tog broja.

Kako bi učenje regularnih izraza bilo lakše možete koristiti Regex Pal gde možete proveriti regularan izraz.

Takođe, predložio bih vam da, kao podsetnik, držite sve karaktere u jednoj tabeli sa kratkim objašnjenjem šta koji znači, a možda i kao mesto odakle ćete početi smišljanje regularnog izraza koji bi vam pomogao da izdvojite to što želite.

Mi smo već napravili tabelu sa regularnim izrazima, i ukoliko želite, možete je preuzeti ovde.