Praktyczne wprowadzenie do wyrażeń regularnych (regex)
Tagi: Google Analytics, regex, regular expressions, wyrażenia regularne
Ostatnio coraz bardziej się przekonuję do wyrażeń regularny (ang. regular expressions, regex), do tego stopnia, że stosuję je zawsze kiedy to możliwe. Was również będę chciał do nich przekonać:) Mam nadzieję, że dzięki podanym przykładom zobaczycie, że naprawdę nie taki wilk straszny, jak go malują…
Wyrażenia regularne są językiem, dzięki któremu za pomocą odpowiednich operatorów możemy dopasować dowolny ciąg znaków spełniający nasze założenia. W Google Analytics możemy je wykorzystać w poniższych przypadkach, a co więcej dają one naprawdę ogromną elastyczność:
- filtry – zarówno te w ramach raportów, jak również te w profilach,
- segmenty zaawansowane,
- konfiguracja celów,
Do powyższych przykładów zastosowań odwołam się w następnym paragrafie. Najpierw poznajmy jednak podstawowe znacznie znaków wykorzystywanych w wyrażeniach regularnych.
Znaki używane w wyrażeniach regularnych
W wyrażeniach regularnych najczęściej (przynajmniej w naszej pracy) wykorzystujemy następujące znaki. Wraz z definicjami podaję proste przykłady. W następnym paragrafie artykułu będzie więcej o życiowym wykorzystaniu:
- ^ (daszek) – rozpoczyna się od – dopasowuje wszystkie wyrażenia, które zaczynają się od danego wzoru np. ‘^sto’ dopasuje takie słowa jak sto, stonoga, stokrotka, stomatolog, ale nie dopasuje już miasto, ciasto itd.
- $ (dolar) – kończy się na – odwrotnie, dopasowuje wszystkie wyrażenia, które kończą się na daną frazę. Wracając do powyższego przykładu dla ‘sto$’ dopasowane zostanie sto, miasto i ciasto, ale nie stonoga, stomatolog czy stokrotka.
Na pewno zauważyliście, że stosując kombinację ^ oraz $ dostajemy coś w stylu dopasowania ścisłego np. dla wyrażenia ‘^miarka$’ dopasuje nam tylko i wyłącznie słowo miarka.
- | (rurka:P, ang. pipe) – lub – w logice ładnie nazywa się to alternatywą. Dzięki temu znakowi dopasowanie zostanie wartości, które stoją po jego obu stronach np. dla ‘^miarka$|^siarka$’ dopasowane zostanie wyłącznie jedno z dwóch słów: miarka lub siarka.
- . (kropka) – zastępuje jeden dowolny znak w wyrażeniu (większa liczba kropek oznacza większa dowolną liczbę znaków) – dzięki wyrażeniu postaci ‘^..aza$’ dopasujemy słowo takie jak: zmaza czy skaza (dwie kropki zastępują nam w tym przypadku dwie litery „zm” lub „sk”). Jeżeli wyrażenie napiszemy z dodatkową kropką na początku tj. ‘^…aza$’ to możemy dopasować np.: zaraza, ale wcześniejsze słowa (zmaza i skaza) nie zostaną już dopasowane. Kropki możemy mnożyć w nieskończoność, ale do tego lepsza jest gwiazdka, o czym poniżej.
- * (gwiazdka) – zastępuje nieskończoną liczbę znaku, po którym następuje – najczęściej wykorzystuję ją w połączeniu z kropką. Dzięki temu połączeniu można osiągnąć dowolny ciąg znaków np. ‘^m(.*)a$’ dopasuje słowa: mantra, manna, mazda, Marianna itp., czyli każdą frazę, która zaczyna się na „m” i kończy na „a”.
- + (plus) – oznacza powtórzenie przynajmniej raz poprzedniego znaku, czyli dla wyrażenia ‘^arka+’ zostaną dopasowane: arka, arkaa, arkaa itd.
- ? (znak zapytania) – oznacza brak wystąpienia lub powtórzenie jeden raz poprzedzającego znaku – dla wyrażenia ‘arka?’ dopasowane zostaną jedynie: arka lub ark.
- [] (nawiasy kwadratowe) – oznaczają dopasowanie dowolnego pojedynczego znaku w ich ramach – dzięki wyrażeniu regularnemu ‘[ck]on[vw]ersion’ dopasowane zostaną następujące frazy: conversion, konversion, conwersion oraz konwersion. Nawiasy kwadratowe w połączeniu z daszkiem w środku dopasują dowolny znak, który NIE znajduje się w sprawdzanej frazie np. dla wyrażenia ‘[^abc]‘ dopasuje każdy znak, poza trzema pierwszymi literami z alfabetu.
- - (myślnik) – oznacza zakres wyrażeń – najczęściej wykorzystuję go w połączeniu z nawiasem kwadratowym np. wyrażenie regularne ‘ar[b-c|k-m]a’ dopasuje następujące frazy: arba, arca, arka, arla, arma. Możemy również wykorzystać cyfry tj. ‘aria[1-9]‘ dzięki czemu dopasuje nam: aria1, aria2, aria3 itd.
- \ (ukośnik tylny) – przywraca standardowe znaczenie znaków wykorzystywanych w wyrażeniach regularnych – jak już zauważyliście wyrażenia regularne wykorzystują znaki, które są często wykorzystywane w kodzie źródłowym strony internetowej. Najlepszym przykładem jest kropka – w wyrażeniach regularnych oznacza dowolny znak, natomiast normalnie jest to separator np. w adresie internetowym. Jeżeli wpiszemy wyrażenie ‘^www.wp.pl$’ to dopasowane zostaną m.in. następujące frazy: www1wpepl, wwwwwppl itp. W celu dopasowania konkretnego adresu internetowego należy wpisać następujące wyrażenie regularne: ‘^www\.wp\.pl$’.
Zobaczmy teraz jak powyższe znaki można wykorzystać w filtrach, segmentach niestandardowych i celach.
Testowanie wyrażeń regularnych
Mimo że wyrażenia regularne nie są skomplikowanym językiem, to jak to jest z każdym językiem programowania – przed jego implementacją poddaje się go testom. Ja najchętniej do testowania wyrażeń regularnych wykorzystuję dwa rozwiązania:
Pierwszy sposób będzie miał szczególne znaczenie przy konfiguracji celów z wykorzystaniem wyrażeń regularnych. Jak zapewne pamiętacie (jeżeli nie, to potrzebujecie powrotu do podstaw w tym zakresie), w Google Analytics możemy skonfigurować trzy typy celów:
- docelowy adres URL,
- czas spędzony w witrynie,
- strony/odwiedziny,
Przy czym w praktyce najczęściej wykorzystuje się pierwszy rodzaj tj. cele oparte na adresach URL.
Kliknij na zdjęcie, aby je powiększyć
Jeżeli zdecydujemy się na dopasowanie wyrażenia URL, to musimy zastanowić się jakie wyrażenie regularne dopasuje nam URL, który będzie dla nas oznaczał konwersję użytkownika. Wszystkie URL, które odsłonili nasi użytkownicy dostępne są w raportach sekcji: Treść / Najlepsza treść. Tam również pod tabelą dostępny jest filtr, który pomoże nam zdecydować czy wyrażenie regularne wykorzystane w konfiguracji celu rzeczywiście dopasowuje nam adres URL, na którym nam zależy. Jeżeli tak, to śmiało możemy wykorzystać to wyrażenie regularne w konfiguracji celu.
Kliknij na zdjęcie, aby je powiększyć
Drugim rozwiązaniem, które stosuję przede wszystkim do testowania wyrażeń regularnych na potrzeby filtrów oraz segmentów jest serwis http://gskinner.com/RegExr/. Działanie serwisu jest bardzo intuicyjne. W pierwszym oknie wpisujemy wyrażenie regularne, w drugim natomiast frazy, które chcemy sprawdzić czy dane wyrażenie regularne je dopasuje.
Kliknij na zdjęcie, aby je powiększyć
Wyrażenia regularne w Google Analytics
W praktyce, jak wspominałem są trzy zasadnicze elementy, gdzie można wykorzystać wyrażenia regularne. Jednak najczęściej wykorzystuje się wyrażenia regularne w filtrach oraz konfiguracji celów.
Wykorzystanie w filtrach
Z filtrami w Google Analytics mamy do czynienia w co najmniej dwóch miejscach – filtry w ramach profilów oraz filtry w widoku raportów.
Filtry w ramach raportów są znacznie częściej wykorzystywane – zwłaszcza, jeżeli chcemy przyjrzeć się wybranym słowom kluczowym. Niech w naszym raporcie słów kluczowych będą następujące frazy.
Kliknij na zdjęcie, aby je powiększyć
Osoby będące w temacie zauważą, że witryna ta zawiera treść, którą można przyporządkować do dwóch branż – doradztwa transakcyjnego oraz strategicznego. W związku z tym będziemy chcieli wybrać słowa związane tylko z doradztwem strategicznym. Patrząc na powyższy raport będą to na pewno: doradztwo, restrukturyzacja, konsulting i strategia. Moglibyśmy to zrobić wpisując wyrażenie regularne: ‘doradztwo|restrukturyzacja|konsulting|strategia’. Jednak nie uwzględnia ono różnych odmian poszczególnych słów, a co więcej różnych ich pisowni, bo w końcu możemy napisać conslutnig oraz konsulting lub firma konsultingowa. Oczywiście można byłoby wypisać wszystkie możliwe odmiany, ale czy jest sens, kiedy możemy zastąpić to jednym – znacznie krótszym wyrażeniem:
Jego efektem będzie następujący raport.
Kliknij na zdjęcie, aby je powiększyć
Analogicznie możemy wykorzystać to w filtrze w ramach profilu. Swoją drogą wyrażenia regularne zawsze muszą być wykorzystywane w filtrach zaawansowanych.
Innym przykładem filtru wykorzystanego w ramach profilu jest filtr włączający ruch z danej sekcji serwisu. W tym wypadku jest to filtr włączający ruch z jedynie dla Studiów II stopnia. W związku z tym, że URL na tej stronie skonstruowane są w ten sposób, że każdy należący do tej sekcji zaczyna się od ‘/studia-ii-stopnia’ lub ‘/studia_ii_stopnia’, to wyrażeniem regularnym będzie tutaj:
Filtr wówczas ma następującą postać.
Kliknij na zdjęcie, aby je powiększyć
Napisałem wyżej, że wyrażenia regularne zawsze wykorzystywane są w filtrach zaawansowanych. Może się jednak zdarzyć, że będziemy mogli użyć go w filtrze predefiniowanym. Na pewno możemy to zrobić dla filtru wyłączającego ruch z podanego zakresu adresów IP.
Kliknij na zdjęcie, aby je powiększyć
Dla zakresu adresów 178.42.219.143-200 odpowiednie wyrażenie regularne będzie miało postać:
Do stworzenia tego wyrażenia regularnego użyłem akurat strony pomocy Google Analytics, ale myślę, że nie sprawiłoby Wam dużo problemu samodzielne napisanie takiego wyrażenia – zwłaszcza z pomocą wspomnianego serwisu http://gskinner.com/RegExr/
Wykorzystanie w celach
Przy konfiguracji celów w Google Analytics pamiętajmy o tym, że wybierając dany rodzaj dopasowania adresu URL determinujemy go również dla konfiguracji ścieżki do celu. Przykład takiego celu prezentuję poniżej.
Kliknij na zdjęcie, aby je powiększyć
Aby przekonać się, że dane wyrażenie regularne działa prawidłowo najpierw sprawdziłem je w raporcie: Treść / Najlepsza treść.
Kliknij na zdjęcie, aby je powiększyć
Aby przekonać się dodatkowo, że tak skonstruowany cel prawidłowo się zlicza zajrzałem do raportu przeglądu celów. Jak się okazuje, dokładnie 4 niepowtarzalne odsłony strony celu skutkują w tym okresie 4 konwersjami – działa!
Kliknij na zdjęcie, aby je powiększyć
Podsumowanie
Jak widzicie, wyrażenia regularne dają naprawdę niesamowite możliwości, a do tego jaką elastyczność… Na pewno zauważyliście również, że przy ich podstawowej znajomości można znacznie szybciej konstruować zaawansowane filtry. Pamiętaj jedynie, że w filtrach można stosować wyrażenia regularne o maksymalnej długości 255 znaków. Od tej bolączki wolne są już segmenty zaawansowane.
Czy udało mi się Was przekonać do stosowania wyrażeń regularnych? (jestem ciekawy…)
Jeśli podobał Ci się ten post – subskrybuj kanał RSS Conversion blog












Polub naszą stronę na Facebooku
Monika said:
maj 14, 12 at 15:50A jak wyszukać dane dla strony głównej w raporcie Treść/Strony Google Analytics? Te same kody wpięte są na kilku domenach – jak wyfiltrować dane tylko dla stron głównych? Próbowałam ^/$ – ale nie działa :( Z góry dziękuję.
Mariusz said:
maj 14, 12 at 21:44Monika, wjedź do filtrowania zaawansowanego i jako typ dopasowania wybierz dopasowanie ścisłe do "/". W ten sposób działa.