Регулярні вирази

Регулярні вирази – це корисний інструмент для роботи з Google Analytics, Google Tag Manager та Яндекс Метрикою. Якщо ви ще не використовували їх, це керівництво для вас. Якось розібравшись у цій темі, ви зможете застосовувати регулярні висловлювання у своїй щоденній роботі і тим самим заощадити час.

Спочатку давайте визначимося, що ми розуміємо під регулярним виразом.

Регулярні вирази – це спосіб опису шаблонів під час пошуку тексту та перевірки відповідності тексту шаблону. До регулярних виразів крім звичайних символів входять спеціальні символи, які дозволяють визначати, що саме ми шукаємо.

Які бувають спеціальні символи

Таблиця спеціальних символів

СимволЗначение
*0 или более предшествующих символов
.Один любой символ
+1 или более предыдущих символов.
?0 или 1 предыдущий символ.
|Оператор "ИЛИ"
( )Группировка
[ ]Список символов, один из которых может присутствовать в тексте
-Границы последовательности символов в квадратных скобках
^Начало строки
$Конец строки
{ }Количество повторений предыдущего символа
\Экранирование специальных символов
\sСимвол пробела
\SЛюбой символ, отличный от пробела
\dЦифровой символ
\DЛюбой символ, отличный от цифры
\wЛюбой буквенный символ латинского алфавита, цифровой символ или символ подчёркивания
\WЛюбой символ, кроме буквы латинского алфавита, цифры и символа подчёркивания

А тепер докладніше зупинимося на кожному із символів та розглянемо приклади їх використання.

Зірочка “*”

Зірочка “*” відповідає 0 або більше попереднім символам.

Наприклад, регулярному виразу абв * будуть відповідати рядки “аб”, “абв”, “абвв”, “абвввв”.

Крапка “.”

Крапка “.” відповідає одному символу.

Наприклад, регулярному виразу “а.в” відповідатимуть рядки “абв”, “аав”, “а.в”, “а&в”.

Крапка “.” зазвичай використовується разом із зірочкою “” у комбінації “.”, яка інтерпретується як “будь-яке число будь-яких символів”.

Наприклад, якщо мені необхідно знайти всі сторінки, які містять слово “bags” (не має значення, що йде до і після потрібного слова), я можу використовувати регулярний вираз із комбінацією “.“, а саме “.bags.*”

1_

Плюс “+”

Плюс “+” відповідає одному чи більше попереднім символам.

Наприклад, регулярному виразу “абв+” відповідатимуть рядки “абв”, “абвв”, “абвввв”.

Знак питання “?

Знак питання “?” відповідає 0 або 1 попередньому символу.

Наприклад, регулярному виразу “абв?” відповідатимуть рядки “аб” та “абв”, але не “абвв”.

Вертикальна характеристика “|”

Вертикальна характеристика “|” дозволяє задати відповідність “АБО”.

Наприклад, регулярному виразу “а|б” відповідатимуть рядки “а”, “б”.

Круглі дужки “( )”

Круглі дужки “( )” використовуються для угруповання та обмеження області дії операторів.

Наприклад, виразу “(абв) +” відповідають рядки “абв”, “абвабв”, “абвабвабв”.

Квадратні дужки “[ ]”

Квадратні дужки [ ] визначають список символів, один з яких може бути присутнім у тексті.

Наприклад, виразу “[абнк]” відповідають рядки “а”, “б”, “н”, “к”, а виразу [0127] – рядки “0”, “1”, “2”, “7”.

Виразу “[^ауоыиэяюее]” відповідають всі символи, які є голосними.

Дефіс “-“

Дефіс використовується разом із квадратними дужками, щоб вказати межі послідовності символів, з якими потрібно порівняти.

Наприклад, виразу “[а-д]” відповідають рядки “а”, “б”, “в”, “г”, “д”, а виразу [0-5] – рядки “1”, “2”, “3”, “4”, “5”.

Важливо! Усі елементи, що укладені у квадратні дужки, вважаються окремими символами.

Тобто виразу “[0-37]” відповідатимуть рядки “0”, “1”, “2”, “3”, “7”, але не всі числа від 0 до 37, як часто помилково думають.

Завдання налаштування фільтра, що часто зустрічається в роботі, для виключення діапазону IP-адрес легко вирішується за допомогою регулярних виразів.

Наприклад, якщо нам потрібно виключити трафік з діапазону IP-адрес від 205.12.2.50 до 205.12.2.93, то нам підійде регулярний вираз такого вигляду:

205.12.2.([5-8][0-9]|9[0-3])

Кришка “^”

Виразу із символом “^” будуть відповідати лише ті значення, які починаються з послідовності символів, вказаної після “^”.

Наприклад, виразу “сумка” будуть відповідати всі рядки звіту, які починаються зі слова “сумка”.

Важливо знати, що комбінація спец. символів “[ ]” та “^”, а саме “[^ ]”, визначає список символів, які не мають бути присутніми в тексті.

Виразу “[^абв]” відповідатимуть будь-які символи, крім “а”, “б”, “в”.

Виразу  [^a-zA-Zа-яА-Я0-9] відповідатимуть усі небуквенні та нецифрові символи (“%”, “&”, “(“, “}” тощо)).

Якщо мені необхідно переглянути дані по всіх джерелах/каналах, назва яких не починається з рядка “google”, я можу скористатися таким виразом:

^[^(google)].*

2

Знак долара “$”

Виразу зі знаком “$” відповідатимуть лише значення, які закінчуються  послідовністю символів, вказаною перед “$”.

Наприклад, вираз сумка $ будуть відповідати всі рядки звіту, які закінчуються словом сумка.

Фігурні дужки “{}”

Фігурні дужки дозволяють вказати кількість повторень попереднього символу.

Наприклад, виразу .{5} відповідатиме будь-які послідовності будь-яких п’яти символів.

Для того, щоб задати діапазон зміни числа повторень, необхідно в квадратних дужках вказати межі через кому.

Наприклад, вираз “.{2,5}” відповідатиме будь-які послідовності, що містять від 2 до 5 будь-яких символів.

Для того, щоб задати лише мінімальну кількість повторень і не обмежувати його зверху, необхідно в квадратних дужках вказати лише нижню межу та кому.

Наприклад, вираз “.{2,}” відповідатиме будь-які послідовності, що містять не менше 2 символів.

Зворотний слеш “\“

Зворотний слеш “\“ служить для екранування спеціальних символів (перетворення символу регулярного вираження звичайний символ).

Якщо нам потрібно, щоб спец. символи в регулярному вираженні сприймалися системою як фрагмент тексту, необхідно використовувати зворотний слеш.

Наприклад, якщо я хочу знайти всі рядки, які містять підрядок “а.б”, то мені потрібно в регулярному вираженні поставити зворотний слеш перед точкою. Таким чином, вираз “.a.б.” відповідатимуть рядку, що містить конструкцію “а.б”. Якби ми використовували вираз без екранування “.a.б.”, у результат увійшли б рядки, що містять підрядок з будь-яким символом замість крапки: “ааб”, “аіб”, “а.б”, “а&б”.

Конструкція “\s”

Конструкція “s” відповідає символу пробілу.

Наприклад, якщо мені потрібно вибрати всі ключові фрази, що складаються лише з одного слова, я можу скористатися регулярним виразом із використанням цієї конструкції:

^[^\s]+$

3

Часто цю конструкцію використовують, коли потрібно відібрати дані з ключових фраз тільки з одного слова, двох, трьох і т.д.

Наприклад, для того, щоб вибрати всі ключові фрази, що складаються лише з двох слів, нам потрібно трохи модифікувати вираз:

^[^\s]+(\s+[^\s]+){1}$

тільки з трьох слів:

^[^\s]+(\s+[^\s]+){2}$

з чотирьох:

^[^\s]+(\s+[^\s]+){3}$

і т.д.

Конструкція “\S”

Конструкція “S” відповідає будь-якому символу, відмінному від пробілу.

Повернемося до завдання у попередньому пункті (вибрати всі ключові фрази, що складаються лише з одного слова). Її також можна вирішити за допомогою конструкції “S”. Вираз матиме вигляд:

^\S+$

Конструкція “\d”

Конструкція \d відповідає цифровому символу. Цей вираз еквівалентний [0-9].

Наприклад, вираз “^\d{5,}$” відповідатиме будь-які послідовності цифр, що містять від 5 і більше символів (“12345”, “0986543521”). Виразу “^\d{3}.*” відповідатимуть послідовності, що починаються з трьох цифр (“257абв”, “123 глава”).

Конструкція “\D”

Конструкція “D” відповідає будь-якому символу, відмінному від цифри. Цей вираз еквівалентний [^0-9].

Наприклад, вираз “^\D+$” відповідатиме будь-які нецифрові послідовності з одного або більше символів (“абв”, “abc”, “a,dsf_sg”).

Конструкція “w”

Конструкція “w” відповідає будь-якому буквеному символу латинського алфавіту, цифровому символу або символу підкреслення.

Наприклад, виразу “^\w+$” будуть відповідати будь-які послідовності з одного і більше символів, що містять літери латинського алфавіту, цифри, символи підкреслення (“abc”, “a_c”, “_x11”, “AB0” тощо).

Конструкція “W”

Конструкція “W” відповідає будь-якому символу, крім літери латинського алфавіту, цифри та символу підкреслення.

Наприклад, виразу “^\W{2}$” будуть відповідати будь-які послідовності з двох символів, що не містять літери латинського алфавіту, цифри та символ підкреслення (“аб”, “а:”, “–”, “рк” тощо).

Приклади для практики

Розібравши регулярні висловлювання на простих прикладах, ми можемо перейти до побудови конструкцій з використанням кількох спеціалістів. символів. Спробуємо розглянути приклади завдань, які можуть бути у роботі маркетолога.

Приклад 1

Завдання: Вибрати дані про брендові ключові слова.

Наприклад, якщо брендові ключі можуть бути присутніми в наступних варіантах: одесео, одесео, одес сео, odesseo, odeseo, ode seo, оде сео, odes seo, то необхідно скласти регулярний вираз, під шаблон якого потрапляли б всі ці варіації. Вираз може мати такий вигляд:

.(odes{0,2} ?s?eo|одес{0,2} ?с?ео).

Розглянемо першу частину конструкції “odes {0,2}? s?eo”. За допомогою фрагмента “s{0,2}” ми вказуємо, що буква “s” може бути присутня після букви “е” 0, 1 або 2 рази. За допомогою “?” охоплюємо слова з пробілом та без.Через оператор “АБО” – “|” вказуємо аналогічний шаблон пошуку слів у російському написании.

4

Приклад 2

Завдання: Включити у звіт всі сторінки з параметром запиту URL.

Для побудови такого регулярного виразу нам необхідно знати, який вигляд має параметр запиту. У моєму прикладі це “s” (URL виглядає так: …/?s=poiskoviy_zapros…). Тоді в регулярному виразі нам слід вказати шаблон для пошуку конструкції “? s =” (що йде до і після неї нас не цікавить, тому використовуємо “. *”). Звертаю увагу на те, що знак питання ми повинні екранувати, тому що тут він не виступає в ролі фахівця. символу, а є частиною шуканої конструкції. Регулярний вираз може мати такий вигляд:

5

Приклад 3

Завдання: визначити, як часто користувачі вводять числові ідентифікатори, що складаються з двох або трьох цифр при використанні внутрішнього пошуку на сайті

Такий шаблон ми можемо отримати за допомогою виразу:

^ [0-9] {2,3} $

6

Приклад 4

Завдання: Для кінематографічного сайту визначити, як часто користувачі читають описи фільмів російською, українською та англійською мовами.

Сторінки, присвячені описам фільмів, містять URL мовну версію сайту і рік виходу фільму. Наприклад: /ua/films-2015. Таким чином, регулярний вираз, шаблону якого будуть відповідати сторінки з описами російською мовою, вийде досить простим:

/ua/films-201[0-6]

8

Де можна застосовувати регулярні вирази

1.Під час роботи з Google Analytics

Регулярні вирази є потужним інструментом для роботи з Google Analytics. Застосовувати їх можна у таких випадках:

1.1 При налаштуванні цілей

9

1.2 При використанні розширеного фільтра у звітах

10

1.3 При створенні сегментів користувача

11

1.4 При налаштуванні фільтрів у виставах

12

1.5. При використанні фільтрів у запитах API Google Analytics

Якщо виникає необхідність роботи з даними поза інтерфейсом аналітики, можна скористатися інструментами, які дозволяють працювати з API Google Analytics. Один із найзручніших – Google Analytics Query explorer.

При використанні Query Explorer у полі “Фільтри” ми можемо задавати умови, яким повинні задовольняти дані у сформованому звіті. Для того, щоб визначити максимально точні критерії відбору, також можна використовувати регулярні вирази.

Синтаксис фільтра наступний:

13

де

  • Ім’я параметра – це параметр, яким проводиться фільтрація. Наприклад, ga:pagePath.
  • оператор – конструкція, що визначає тип відповідності виразу. Щоб вказати, що написана в полі “Фільтри” конструкція є регулярним виразом, необхідно як оператор використовувати комбінацію символів “=~”.
  • вираз – конструкція, за допомогою якої визначаються значення, які мають увійти до результату.

Таким чином, вираз виду:

14

слід інтерпретувати так: показати всі сторінки, URL яких закінчується “/Wallets/”.

Наприклад, якщо мені потрібно побудувати звіт тільки на сторінках, назва яких починається з фрази “Молодіжні сумки” або “Молодіжна сумка”, я можу використати вираз:

ga:pageTitle=~^Молодіжні сумки(и).*

15

Для того, щоб вказати більше однієї умови у фільтрі, можна скористатися операторами “І” та “АБО”. Як оператор “І” виступає кома “,”, як “АБО” точка з комою “;”.

Наприклад, якщо мені необхідно отримати дані по всіх містах України, назва яких починається з літери K, я можу через точку з комою вказати ці дві умови:

ga:city=~^K;ga:country==Ukraine

screenshot

При роботі з даними Google Analytics, завантаженими в Google Docs за допомогою Google Analytics Spreadsheet Add-on також зручно користуватися регулярними виразами.Синтаксис аналогічний тому, що ми використовуємо Query explorer.

Наприклад, якщо я хочу вибрати ті самі міста України, назва яких починається з літери “K”, мені підійде конструкція, сформована вище. Потрібно вказати її у полі “Фільтри” конфігурації звіту.

17

Результати, що відповідають такому запиту, ми можемо переглянути на відповідній вкладці звіту:

18

Якщо ми хочемо отримати у звіті дані, які не відповідають певному регулярному виразу, необхідно використати конструкцію “!~”.

Наприклад, якщо мені необхідно отримати дані по всіх сторінках каталогу, які не є картками товарів (картка товару є сторінкою четвертого рівня папки /catalog/), я можу використовувати регулярний вираз для визначення шаблону картки товару:

ga:pagePath!~/catalog/.+/.+/.+

19

2. Під час роботи з Google Tag Manager

Ефективна робота з Google Tag Manager також не обходиться без уміння використовувати регулярні вирази.У тригерах з допомогою можна задати необхідну умову активації.

Наприклад, якщо мені потрібно, щоб тег спрацьовував лише на певних сторінках (у прикладі сторінки mysite.com.ua/contacts/ та mysite.com.ua/onas/), я також можу досягти цієї мети за допомогою регулярного виразу.

20

Якщо у мене є завдання відстежувати завантаження PDF- і XLSX-документів з сайту, мені достатньо однієї умови активації, яку також можна сформулювати регулярним виразом:

21

Про те, як почати працювати з Google Tag Manager.

Під час роботи з Яндекс Метрикою


3.1 При визначенні цілей у Яндекс Метриці

При роботі з Яндекс Метрикою також можна скористатися регулярними виразами. Зокрема, цей функціонал дозволяє виконати гнучкіше налаштування цілей на відвідування сторінки, а також складових цілей.

22

3.2 Під час роботи з сегментами в Яндекс Метриці

Сегментація є одним з найбільш простих у використанні, проте одним з ефективних способів аналізу. А для того, щоб доповнити пропоновані системою вбудовані варіанти сегментів зрізами, що бракують, також можна задіяти регулярні вирази.

23

Як перевірити, що регулярний вираз складено правильно

Для того, щоб уникнути помилок при використанні регулярних виразів, можна перед використанням протестувати їх, застосувавши розширений фільтр у будь-яких звітах аналітики.

А також можна перевірити регулярні вирази на тестовій вибірці за допомогою спеціальних інструментів. Я використовую сайт Regex Pal або розширення для браузера RegExp Tester.

Для тих, хто тільки починає освоювати регулярні висловлювання, а також для запеклих фахівців, які хочуть перевірити свої навички використання цих конструкцій, дуже рекомендую відвідати цей сайт.Тут ви зможете попрактикуватися у складанні регулярних виразів в ігровій формі.

Ще корисна інформація на тему:

Регулярні вирази Google Data Studio.

Пам’ятка регулярних виразів у Google Analytics.

Довідковий посібник з роботи з Core Reporting API.