Регулярные выражения 🧲 Google Analytics: 12 символов RegEx

регулярные выражения символы

Застряли с Google Analytics? Отчеты не строятся, фильтры не задать, данные не релевантные? Регулярные выражения RegEx позволят вам используя привычные символы создавать целые операции по фильтру данных.

Регулярные выражение — это способ фильтровать данные по части значения (power matching). В нотации Гугл Аналитикс используется название RegEx (regular expressions).

Проблема заключается в том, что мы используем символы для всего: для операций и для значений. Чтобы избежать ошибки в записи, надо знать все RegEx символы и уметь применять хотя бы некоторые из них.

К нашим услугам такие символы:

\ Обратный слеш — отмена RegEx для символа

Бекслеш отменяет функцию регулярного выражения для последующего символа, преобразуя его из RegEx команды в обычный текст. Часто заменяет символы «.» или «?».

/folder\?pid=123

Если бы не бекслеш, то символ «?» в регулярном выражении выполнял другое действие. А так это просто текст со значением URL.

| Вертикальная черта — «или… или»

Символ пайп имеет логику «или». Пишем без пробелов:

cpc|ppc|cpm

Канал трафика на сайт может иметь разные значения, но для каких-то своих нужд мы группируем несколько каналов в одном фильтре.

Другой пример. На сайте есть две страницы Спасибо — thankyou и freeguide, — прикрепленные к одной конверсионной цели. Вертикальная черта позволит вычленить URL обеих страниц:

thankyou|freeguide

? Знак вопроса — предыдущая часть опциональная

Знак вопроса после символа или группы символов делает их опциональными, необязательными. Часто применимо для фильтрации сложных слов с задвоенными буквами:

Miss?iss?ipp?i

Данные запрос будет включать: Mississippi, Misisipi, Missisipi, Mississipi, Misissippi. Знак вопроса делает так, что предыдущая буква (s, p) является необязательной в запросе.

RegEx «Знак вопроса» хорош для фильтрафии брендовых запросов или Имен на сайте.

() Круглые скобки — приоритет операции

Чтобы проще объяснить, сразу пример:

bestbuy.ru/(one|two)

В регулярном выражении мы указали два адреса URL — bestbuy.ru/one, bestbuy.ru/two.

Скобки в RegEx сродни математическим скобкам — они задают приоритет операций в вычислениях типа (2+6)х5=40.

Поэтому в примере выше сначала выполняется часть «one|two». А это, как мы уже видели, операция или. Затем каждое из значений используется с неизменяемой частью ссылки.

Другой пример.

(…)? Круглые скобки и знак вопроса. Имеем три страницы:

  • /category/198
  • /category/199
  • /category/200

Если применить такое регулярное выражение:

/category/1(98)?

то мы получим только две из них — /category/198, /category/199. Знак вопроса оставляет на выбор — включать или не включать циферную часть после единицы. Но цифра 2 не попадает под условие фильтра.

[-] Квадратные скобки и дефис — список элементов и «от и до»

Эти два символа регулярных выражений часто используются вместе. Вместе мы их и рассмотрим.

Квадратные скобки делают содержимые в них символы списком. Без пробелов:

м[оыи]шка

Получим: мошка, мышка, мишка. Не получим моыишка.

Дефис позволяет делать стандартизированные списки:

  • [a-z] – все английские буквы в нижнем регистре
  • [A-Z] – все английские буквы в верхнем регистре
  • [a-zA-Z0-9] – верхний и нижний регистр и все цифры

Важно! Внутри квадратных скобок почти все символы теряют свою RegEx функцию и становятся обычными символами. Все, кроме:

  • — Дефис
  • \ Обратный слеш
  • ^ Знак вставки

Например, у вас гитарный магазин со списком наименований: fender30U.2, … fender30U.4. Берем, и фильтруем всю номенклатуру списком:

fender30U[.2-4]

Получим полный список гитар 2, 3, 4, 5, — где точка как регулярное выражение перестает работать внутри квадратных скобок, а дефис — нет.

{} Фигурные скобки — поворить последную часть Х раз

Когда имеем фигурные скобки вида {1,3}, это значит надо повторить предыдущее значение от 1 раза, но не более 3 раз.

Когда имеем фигурные скобки вида {2}, это значит надо повторить предыдущее значение ровно 2 раза.

Но что за предыдущее значение? Например, цифры из IP-адресов.

Компания хочет отфильтровать собственные айпи адреса в отчетах анатилики. Допустим, их IP лежат в диапазоне от 123.456.789.0 до 123.456.789.99. Применяя фигурные скобки получим RegEx:

123\.456\.789\.[0-9]{1,2}

Кстати, бекслеш \ помогает сохранить символ точки. Диапазон [0-9] содержит только числа из одной цифры, поэтому фигурные скобки {1,2} определяют, сколько цифр может содержать предыдущее значение — одну или две.

Если бы мы указали {1}, то наш фильтр выдавал бы только значения 123.456.789.0 — 123.456.789.9. Если {2}, то только диапазон 123.456.789.00 — 123.456.789.99 (что не совсем корректно).

Допустим, вы хотите построить сегмент аналитики по индексам получателей формата 196ХХХ. Используя символ фигурные скобки можно построить регулярное выражение:

196(0-9){3}

Таким образом мы охватим все индексы в диапазоне 196000-196999.

. Точка (Dot) — любой другой символ

Одна точка = один символ. Даже пробел можно заменить точкой.

м.шка

На выходе получим: мишка, мошка, м4шка, м₽шка, … Потому что и, о, 4, ₽ — это символы на клавиатуре. Но мы не получим «мшка», т.к. точка не может заменять отсутствие символа.

Возможно, вы замечали, что если сделать фильтр в ГА по RegEx index.php, то ошибки не происходит. А все потому, что один из символов, на который заменяется точка — сама точка. Ну а другие значения между index и php редко встречаются.

Поскольку не так много, где нужна такая операция, чаще точка используется совместо с другими RegEx символами (.*).

+ Знак плюс (Plus sign) — повтор предыдущего символа Х раз

При знаке плюс значение совпадает с предыдущим символом (в простом случае) один и более раз.

ураа+

Получим как самые простые, так и самые громогласные: ураа, урааа, ураааааа. Но, как и в случае с точкой, мы не получим ура.

* Звездочка (Star) — повтор предыдущего символа от 0 раз

Звездочка * означает 0 или более повторений предыдущего элемента (для простоты — символа). По русски, «все варианты после Х». Сильно похожа на Знак плюс +, за исключением, что возможен 0 значений.

ураа*

Получим фильтр на: ураа, урааа, урааааааа и — ура. Так как ноль значений для а допускается при символе *.

.* Точка-звездочка (Dot star) — включить все

Символы точка-звездочка означают «включить все, что стоит после».

/downloads/.*\.pdf

В примере выше нужно включить все, что лежит в папке /downloads/ и оканчивается на .pdf . То есть, «скачать все ПДФ-файлы из папки Загрузок».

Заметьте, что обратный слеш перед точкой снимает регулярное выражение. Если бы мы оставили /downloads/.*.pdf, то был бы шанс, что в фильтр попадут страницы вида /downloads/checklist-pdf/. Бекслеш же строго обозначает, что нам нужны только ПДФ файлы.

Почему работает пара .*?

Точка — это любой символ. Звездочка — повтор последнего символа от 0 раз. Имеем любой значок на клавиатуре (буква, цифра, знак пунктуации, спецсимвол) ПЛЮС возможность повторить снова любой символ бесконечное число раз. Вот и получается все на свете.

^ Знак вставки (Caret, circumflex) — строгое соответствие строки

Знак домик говорит, что соответствие при RegEx фильтре должно быть строгим. И тут интересно будет начать с анти-примера.

Есть URL: https://potoklab.ru/works/2017/index.html. Я хочу фильтрануть только одну подпапку /2017/ и создаю регулярное выражение ^/2017/index\.html. Почему у меня не работает?

Потому, что Гугл Аналитикс считывает УРЛ сразу после расширения .ru. Получается, что части /works/ нет в условии, и Гугл игнорирует файл /works/2017/index.html.

Если использовать знак вставки с квадратными скобками в самом начале, это означает «исключить символы, стоящие прямо после ^«.

[^0-9]

Формула выше означает, что если строка содержит цифры — она не подходит.

$ Знак доллара (Dollar sign) — исключить все варианты после $

Все что после знака доллара — нам не подходит.

Например, мы хотим отфильтровать главную страницу. По уполчанию для ГА это «/» (прямой слеш). Но если сделать регулярное выражение «/» — это будет означать, включить все.

^ /$

Так мы включим в фильтр только главную. А все, что кроме — нет. Знак ^ дополнительно гарантирует, что это самый первый слешь после расширения .ru (.com, .pro., .mocsow, etc.), а не какой-нибудь слешь в подпапке.

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

Например, мы отслеживаем реферальные ссылки по параметрам URL (они начинаются после знака ?). Сайт для рефералов выглядит так:

  • http://bestcream.ru/?clickid=affiliate123

Если был строгий фильтр ^/$ — мы отсекаем из отчетов страницу /?clickid=affiliate123. Нот гуд.

А на разминку парочка полезных примеров для веб-аналитика.

Исключаем параметры URL в отчетах Google Analytics

Среди фильтров внутри Админ > Представление > Фильтры есть настройка «Поиск и замена».

Необходимо установить полем фильтра Request URI и применить регулярное выражение:

  • \?[query1,query2]=.*

Вместо query1, query2 подставить желаемые параметры. В поле Замены подставить желаемый URI (он информационный, просто для отчетов). Примерно так:

Перезапись параметров URL не нужных для отчетов.

Учтите, что данная операция удалит информацию о параметрах из ГА. Это надо, например, для исключения личной информации пользователей.

Если вам надо просто исключить параметры из отчетов (данные в ГА все равно будут поступать), надо на уровне представления зайти в Админ > Настройки Представления и добавить через запятую без пробелов ваши параметры:

исключить параметры урл
Исключаем параметры URL из отчетов ГА.

Как узнать, какие параметры есть в ваших ссылках?

Переходим в Поведение > Контент сайта > Все страницы. Нажимаем Еще../Advanced.. (расширенный фильтр) и вводим регулярное выражение:

\?|\=

Так мы отфильтруем все страницы, содержащие знак ? или = (то есть страницы с параметрами).

Добавление имени хоста в отчеты ГА

В Google Analytics бывает полезно добавить имя хоста к страницам в отчетах. Это делается при помощи регулярного выражения (.*), что означает «взять все и поместить в переменную».

Добавить имя хоста (домен) к URI страницы можно при помощи (.*)

Мы как бы говорим ГА в настройке фильтра: смапь имя хоста для Field A, Request URI (путь страницы) — для Field B. А затем выведи заместо пути страницы домен + путь вместе (команда $A1$B1).

Оффтоп: ловите мою бесплатную прокачку по рекламе Фейсбук о том, как управлять бюджетами от 1 500 000 руб. в интернет-рекламе.