Застряли с Google Analytics? Отчеты не строятся, фильтры не задать, данные не релевантные? Регулярные выражения RegEx позволят вам используя привычные символы создавать целые операции по фильтру данных.
Регулярные выражение — это способ фильтровать данные по части значения (power matching). В нотации Гугл Аналитикс используется название RegEx (regular expressions).
Проблема заключается в том, что мы используем символы для всего: для операций и для значений. Чтобы избежать ошибки в записи, надо знать все RegEx символы и уметь применять хотя бы некоторые из них.
К нашим услугам такие символы:
- \ Обратный слеш (backslash) — отмена RegEx для символа
- | Вертикальный слеш (Pipe) — логика «или… или»
- ? Знак вопроса (Question mark) — предыдущая часть опциональная
- () Круглые скобки (Parentheses) — приоритет операции
- [-] Квадратные скобки и дефис (Square brackets & dashes) — список элементов и «от и до»
- {} Фигурные скобки (Curly braces) — поворить последную часть Х раз
- . Точка (Dot) — любой другой символ
- + Знак плюс (Plus sign) — повтор предыдущего символа Х раз
- * Звездочка (Star) — повтор предыдущего символа от 0 раз
- .* Точка-звездочка (Dot star) — включить все
- ^ Знак вставки (Caret, circumflex) — строгое соответствие строки
- $ Знак доллара (Dollar sign) — исключить все варианты после $
\ Обратный слеш — отмена 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:
- yoursite.ru (без форвард слеша)
- yoursite.ru/ (с форвард слешем)
- yoursite.ru/index.html (с указанием файла главной страницы)
- yoursite.ru/?utm_medium=… /?gclid=1234.. (с параметрами отслеживания)
$|\/$|\/\?
Знак доллара игнорит все страницы: либо с символами сразу после доменного имени сайта, либо после слеша «/», либо включает все варианты главной с параметрами.
В этой тулзе удобно проверять полученные регулярные выражения:
https://www.regextester.com/106088
Исключаем параметры URL в отчетах Google Analytics
Среди фильтров внутри Админ > Представление > Фильтры есть настройка «Поиск и замена».
Необходимо установить полем фильтра Request URI и применить регулярное выражение:
- \?[query1,query2]=.*
Вместо query1, query2 подставить желаемые параметры. В поле Замены подставить желаемый URI (он информационный, просто для отчетов). Примерно так:
Учтите, что данная операция удалит информацию о параметрах из ГА. Это надо, например, для исключения личной информации пользователей.
Если вам надо просто исключить параметры из отчетов (данные в ГА все равно будут поступать), надо на уровне представления зайти в Админ > Настройки Представления и добавить через запятую без пробелов ваши параметры:
Как узнать, какие параметры есть в ваших ссылках?
Переходим в Поведение > Контент сайта > Все страницы. Нажимаем Еще../Advanced.. (расширенный фильтр) и вводим регулярное выражение:
\?|\=
Так мы отфильтруем все страницы, содержащие знак ? или = (то есть страницы с параметрами).
Добавление имени хоста в отчеты ГА
В Google Analytics бывает полезно добавить имя хоста к страницам в отчетах. Это делается при помощи регулярного выражения (.*), что означает «взять все и поместить в переменную».
Мы как бы говорим ГА в настройке фильтра: смапь имя хоста для Field A, Request URI (путь страницы) — для Field B. А затем выведи заместо пути страницы домен + путь вместе (команда $A1$B1).
Ну что, ближе к делу?
Смотрите мое бесплатное видео про воронки продаж Фейсбук и узнайте логику построения рекламного аккаунта, позволившую снизить мне цену заявки на 65%. Получить доступ!