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

Раньше из регулярных выражений я использовал только (.*) . Несколько друзей настоятельно советовали мне разобраться в этом вопросе. Но не понимая, где их можно применять, я откладывал это до лучших времен.

Все изменилось, когда мне пришлось более плотно работать с Google Analytics и Google Tag Manager в Netpeak. Без понимания регулярных выражений сложно представить себе нормальную настройку фильтров, пользовательских сегментов в GA или правил в GTM.

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

Что такое регулярные выражения

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

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

5 способов протестировать свои знания о регулярных выражениях в реальном времени

1. http://regexpal.com/

На этом сайте можно ввести набор данных и регулярное выражение. После этого в наборе данных подсветятся строки, соответствующие выражению.

Давайте посмотрим, как это работает. Задача — подсветить всю строку полностью. Желательно поставить галочку “^$ match at line breaks”.

Тестовые данные:

http://www.site.com/

http://www.site.com/index.php

http://www.site.com/products/100.php

http://www.site.com/products/101.php

http://www.site.com/products/102.php

http://www.site.com/duals/index.html

http://www.site.com/ourteam/index.php

https://www.site.com/

https://www.site.com/profile

http://www.site.com/ua/index.php

http://www.site.com/ua/productu/100.php

http://www.site.com/ua/productu/101.php

http://www.site.com/ua/productu/102.php

http://www.site.com/search?q=widget

http://www.site.com/search?q=widget+thinger

http://www.site.com/search?q=smidges

http://www.site.com/index/yy.jpg

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

Все страницы (17 соответствий)
(.*) — любое количество любых символов

Все страницы с https (2 соответствия)
^https.* — все URL, начинающиеся с https

Все страницы на украинском языке (4 соответствия)
.*/ua/.* — все страницы, в URL которых содержится /ua/. Если использовать просто ua, то в выборку попадет http://www.site.com/duals/index.html, которое нам не нужно.

Все индексные страницы (4 соответствия)
.*index.(php|html) — аналогично прошлому выражению, нельзя просто использовать index.

Все карточки товаров (для русской и украинской версий)
.*product(s|u).* или .*product[su].* — оба варианта подходят.

2. http://jsfiddle.net/

Это отличный инструмент для экспериментов с JavaScript. В нем можно проверить условия для запуска функции или вывода нужных результатов.

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

3. http://www.google.com/analytics/

Самый быстрый способ проверить свои знания о регулярных выражениях в Google Analytics — это фильтры в стандартных отчетах. Зайдите в свой аккаунт и в любом отчете, где доступны фильтры, попробуйте отобрать какой-либо набор данных.

Для этого нажмите “Еще…” и выберите “Поиск соответствующего регулярного выражения”. В зависимости от задачи выберите “Включить” или “Исключить” и проверьте полученный результат.

Примеры задач:

  • выбрать все страницы из нескольких категорий;
  • выбрать все источники трафика с доменом .info.

4. http://ga-dev-tools.appspot.com/explorer/

Этот инструмент позволяет протестировать запросы с регулярными выражениями для Google Analytics API. Подключите свой аккаунт, выберите стандартный отчет и попробуйте отфильтровать в нем данные.

Вот пример запроса, который можно сделать для требуемого временного промежутка:

Dimensions: ga:pagePath
Metrics: ga:pageViews
Order: -ga:pageViews

В поле filters можно указывать логически операторы =, !=. Для использования регулярных выражений нужно использовать =~ (соответствует), !~(не соответствует).

Для поиска определенной страницы можно использовать конструкции вида ga:pagePath==contact.php

Если у вас несколько страниц контактов для разных городов можно использовать ga:pagePath=~contact/(kiev|odessa).

5. https://www.google.com/tagmanager/

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

С помощью GTM можно реализовать задачу, аналогичную приведенному выше примеру сhttp://jsfiddle.net/, в режиме тестирования без добавления кода на сайт и публикации тегов.

Для этого создайте тег прослушивания кликов и еще один пользовательский HTML-тег с кодом:

Создайте правило с event=gtm.linkClick и еще одно правило, которое присваивает макросу element url значение с регулярным выражением для поиска URL, оканчивающихся на .pdf или что-то подобное.

Что еще полезного можно почитать про регулярные выражения

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

Заключение

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

Автора автора