Regex шпаргалка
Работая с Google Analytics, GTM или Datastudio, вы наверняка очень часто встречали слово «регулярное выражение». Регулярные выражения, сокращенно Regex, представляют собой специальные последовательности символов, которые помогают нам более эффективно работать с текстовыми значениями. Они используются при фильтрации, поиске, создании целей и сегментов.
Регулярное выражение — это последовательность символов, определяющая шаблон поиска, который затем сопоставляется с текстом. В веб-аналитике мы можем использовать регулярное выражение для поиска URL-адресов, текстовых шаблонов, названий событий, ключевых слов, источников трафика…
Чтобы лучше понять, что такое регулярные выражения, мы рассмотрим каждый специальный символ, объясним его значение и посмотрим на варианты использования.
Вертикальная черта (|)
Вертикальная черта — это наиболее часто используемая функция, которая вам понадобится для работы с Google Analytics.
Значение этого выражения очень простое — оно означает « или ».
Если мы хотим отфильтровать данные только из Facebook или Google, мы просто напишем facebook (вертикальную черту по середине) google. Google Analytics выбирает либо одно, либо другое, либо и то, и другое.
Точка (.)
Точка представляет любой символ. Ее еще часто называет wild card (англ. wild card, дословно — «дикая карта»).
Если мы определим шаблон поиска регулярного выражения как .от, он будет соответствовать словам мот, кот, пот, рот и т. Д. Однако регулярное выражение не будет соответствовать слову от (вместо точки должен быть символ).
Лучше всего использовать потенциал точки в сочетании с другими регулярными выражениями.
Звездочка (*)
Мы будем использовать звездочку, чтобы найти совпадения предыдущего элемента, она находит от 0 и более совпадающих элементов.
В качестве примера возьмем google. К примеру если вы хотите найти все используемые словосочетания google вы можете, использовать такое регулярное выражение go*gle, оно найдет все варианты gogle, google, gooogle, goooogle.
P.S. Звездочка срабатывает точно так же, как и знак плюс за исключением того, что она позволяет сопоставить НОЛЬ (или больше) из предыдущих элементов.
Точка - звездочка (. *)
Если мы хотим найти совпадение для любого символа, повторяющегося ноль или более раз, мы используем (. *). Точка означает “любой символ”, а следующая за ней звездочка означает может повторяться сколько угодно раз или вообще отсутствовать.
Пример: у вас есть несколько разных типов учетных записей клиентов, но вы хотите видеть свои данные для всех из них. Все они имеют похожие страницы, поэтому ваши страницы выглядят примерно так:
/customer/free/login/
/customer/start/login/
/customer/premium/login/
Для этого вы можете написать следующее регулярное выражение:
/customer/.*/login
Знак плюс (+)
Знак плюс (+) очень похож на *, за исключением того, что он соответствует ОДНОМУ или нескольким предыдущим символам.
Пример: для слова hello + будет также найдено соответствие в hello, helloo, hellooo и т.д.
Вопросительный знак (?)
Вопросительный знак означает, что предыдущий символ не требуется. Он может быть или не быть в слове.
Пример: у нас есть ключевое слово антенна, люди часто ошибаются и пишут его с одной буквой н - допустим мы хотим найти ключевое слово, в том числе с ошибкой.
Для этого вы можете написать следующее регулярное выражение:
антенн?а
И тогда вы получите оба ключевых слова, которые вы искали.
Круглые скобки (())
Круглые скобки используются так же, как и в математике. Они помогают нам расставить приоритеты и изолировать логику, которая находится внутри них.
Пример:
2 × 5 + 10 = 20 2 × (5 + 10) = 30
Аналогичный принцип применяется к регулярным выражениям. Мы используем круглые скобки, чтобы сгруппировать различные части выражения вместе.
Допустим, у вас есть сайт с тремя предложениями, и вы хотите увидеть по этим трем предложениям страницы с ценами.
Ваши URL-адреса следующие:
site.com/products/start/price
site.com/products/premium/price
site.com/products/vip/price
Чтобы увидеть все предложения, вы можете использовать такое регулярное выражение:
\/products\/(start|premium|vip)\/price
Квадратные скобки ([])
Квадратные скобки, внутри регулярного выражения, считаются одним символом «здесь должен быть один из перечисленных символов», который может принимать значения, перечисленные внутри этих скобок.
Они подразделяются на наборы и диапазоны.
Набор go[glo]gle для google сначала проверяет первую букву, потом вторую, потом третью.
Диапазон к примеру, работает немного по другому он ищет по диапазону. Для регулярного выражения go[g-o]gle диапазон будет соответствовать символу в диапазоне от g до o, или на примере цифр [1-5] – цифра от 1 до 5.
Тире (-)
Используется для создания расширенного списка. Чаще всего используется вместе со скобками для определения диапазона символов.
- [az] находит совпадение со всеми строчными буквами,
- [AZ] находит совпадение, состоящее только из прописных букв,
- [0-9] находит совпадение по всем цифрам,
- [a-zA-Z0-9] находит совпадение по всем строчным, прописным буквам и цифрам.
Пример:
Допустим вам нужно отфильтровать определенную группу товаров по моделям:
MacBook Air 2017
MacBook Air 2018
MacBook Air 2019
MacBook Air 2020
Циркумфлекс (^)
^ (символ циркумфлекс, каретки) — в начале шаблона циркумфлекс является метасимволом начала строки.. В начале символьного класса обозначает метасимвол отрицания, отрицающий все символы, указанные в символьном классе: «[^abc0-5]» - не “a”, не “b”, не “c” и не цифры от “0” до “5”… в любой другой позиции символьного класса циркумлекс будет литералом.
Знак каретки ‘^’ и доллара ‘$’ имеют в регулярном выражении особый смысл. Их называют «якорями» (anchor – англ.).
Знак доллара ($)
Знак доллара прямо противоположен знаку каретки - он позволяет находить строки, оканчивающиеся определенным сочетанием символов.
Обратный слеш (\)
”\” - обратный слеш производит операцию экранирования метасимвола, следующего непосредственно за ним, тем самым последующий метасимвол трактуется как литерал. Примеры: «.» (совпадение с любым символом), “\.” (совпадение только с точкой).
Например, если мы хотим отфильтровать только IP-адрес (67.172.171.105), мы должны экранировать точку, разделяющую отдельные числа: 67.172.171.105 - в этом случае регулярное выражение найдет IP 67.172.171.105.
Например нам нужно найти часть в URL-адресе nego/item?topicId=1994194356, если мы не будем использовать экранирование регулярное выражение будет воспринимать знак вопроса, как оператор регулярного выражения.
Фигурные скобки ({})
Фигурные скобки используются для указания конкретного количества повторений, от и до.
«{min,max}” - задает количество вхождений от значения min до значения max
«{min,}” - задает количество вхождений от значения min до бесконечности
«{точное количество}” - задает точное количество вхождений
Проще всего понять на примере поиска IP адресов по маске. Чтобы найти соответствие в этом диапазоне IP-адресов от 77.120.120.0 до 77.120.120.99, нам нужно написать следующее регулярное выражение: ^77.120.120.[0–9]{1,2}$.
Ленивый и жадный квантификатор
Квантификаторы (+, *, ?) по умолчанию являются жадными, т.е. захватывают как можно больше вхождений. Добавляя к квантификатору знак вопроса, мы делаем его ленивым, т.е. заставляем искать как можно меньше вхождений.
Пример ленивый квантификатор
Пример жадный квантификатор
Символьные классы
«[abc]” - любой один символ из трех указанных: или “a”, или “b”, или “c”
«[a-f]” - символы в диапазоне от “a” до “f” (a,b,c,d,e,f)
«[0-9]» - цифры от “0” до “9” (0,1,2,3,4,5,6,7,8,9)
Метасимволы символьных классов
\d - [0-9], цифры
\D - [^0-9], кроме цифр
\w - [a-zA-Z0-9_], буквенно-цифровые символы и подчеркивание
\W - [^a-zA-Z0-9_], кроме буквенно-цифровых символов и подчеркивания
\s - [\r\n\t\f\v (пробел)], пробельные символы
\S - [^\r\n\t\f\v (пробел)], кроме пробельных символов