Регулярные выражения в работе маркетолога

Регулярные выражения

Регулярные выражения – это полезный инструмент для работы с 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-адресов легко решается с помощью регулярных выражений.

Например, если нам нужно исключить трафик c диапазона 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=” (что идет до и после нее нас не интересует, поэтому используем “.*”). Обращаю внимание на то, что вопросительный знак мы должны экранировать, так как тут он не выступает в роли спец. символа, а является частью искомой конструкции. Регулярное выражение может иметь следующий вид:

.*\?s=.*

5

Пример 3

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

Такой шаблон мы можем получить с помощью выражения вида:

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

6

Пример 4

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

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

/ru/films-201[0-6]

7

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. При работе с Яндекс Метрикой

3.1 При определении целей в Яндекс Метрике

При работе с Яндекс Метрикой также можно пользоваться регулярными выражениями. В частности, этот функционал позволяет выполнить более гибкую настройку целей на посещение страницы, а также составных целей.

22

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

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

23

Как проверить, что регулярное выражение составлено верно

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

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

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

Еще полезная информация по теме:

Памятка по регулярным выражениям в Google Analytics.

Справочное руководство по работе с Core Reporting API.

Памятка по регулярным выражениям в Яндекс Метрике.