Метрика

Регулярні вирази

Регулярні вирази можуть використовуватися під час визначення цілей типу URL сторінки і Складова ціль, а також під час сегментування за умовами, в яких фігурують URL (наприклад, джерела трафіку).

Вирази обробляються відповідно до синтаксису RE2 і таких правил:

  • Регулярний вираз застосовується до повного URL сторінки, включаючи протокол і домен. Наприклад, ви можете використовувати регулярний вираз: ^http://.
  • Регулярний вираз застосовується двічі: до оригінального URL та до URL із префіксом www і без нього. Завдяки цьому результат перевірки виразу не залежить від наявності префікса www у домені.
  • Регулярний вираз застосовується до декодованого URL, в якому URL-коди (%-послідовності) замінено на декодовані символи (виняток: коди символів /, &, =, ?, # не замінюються; наприклад, %2F не буде замінено на /). Слід мати на увазі, що при декодуванні символ + замінюється на пробіл. Наприклад, регулярний вираз text=слон буде оброблено, а text=%D1%81%D0%BB%D0%BE%D0%BD і text=%\w\w — ні.
  • До кириличних URL не застосовується punycode. Наприклад, регулярний вираз ^http://ввв\.сайт\.рф/ буде оброблено, а ^http://xn--b1aaa\.xn--80aswg\.xn--p1ai/ — ні.
  • Перед перевіркою регулярних виразів із закінчення URL виключаються деякі символи: ?, #, &, а також крапка (.). Наприклад, для URL http://example.com/?, http://example.com/#, http://example.com/?var=1& порівняння проводитиметься з http://example.com/, http://example.com/, http://example.com/?var=1 відповідно. Якщо користувач увів URL http://example.com./, то регулярний вираз \./$ не буде оброблено.
  • Перевірка регулярних виразів здійснюється з урахуванням регістру символів у URL.
  • При перевірці виразів квантифікаторам відповідає максимально довгий рядок.

Пам'ятка про регулярні вирази

У таблиці нижче a, b, c, d, e — будь-які символи, n, m — цілі додатні числа.

Допустимі варіанти
abc|deВідповідає одному з варіантів: abc або de.
Класи символів
[abc] або [a-c]Відповідає будь-якому (одному) символу з перерахованих (або з діапазону).
[^abc] або [^a-c]Відповідає будь-якому (одному) символу, крім перерахованих (який не входить у діапазон).
\d Відповідає цифровому символу. Еквівалентно [0-9].
\D Відповідає символу, який не є цифрою. Еквівалентно [^0-9].
\s Відповідає пробілу. Еквівалентно [\t\n\f\r ].
\S Відповідає символу, який не є пробілом. Еквівалентно [^\t\n\f\r ].
\pL Відповідає будь-якому символу Unicode.
\w

Відповідає латинській букві будь-якого регістру, цифрі або знаку підкреслення.

Під час роботи із символами Unicode замість \w використовуйте клас \pL.

\W

Відповідає будь-якому символу, відмінному від латинської букви будь-якого регістру, цифри або знаку підкреслення.

Під час роботи із символами Unicode замість \w використовуйте клас \pL.

Кількість входжень (квантифікатори)
a*Відповідає символу a, повтореному 0 або більше разів (вибирається максимально довга послідовність із можливих).
a+ Відповідає символу a, повтореному 1 або більше разів (вибирається максимально довга послідовність із можливих).
a? Відповідає символу a, повтореному 0 або 1 раз (пріоритетна наявність символу).
a{n,m} Відповідає символу a, повтореному не менше ніж n і не більше ніж m разів (вибирається максимально довга послідовність із можливих).
a{n,} Відповідає символу a, повтореному не менше ніж n разів (вибирається максимально довга послідовність із можливих).
a{n} Відповідає символу a, повтореному рівно n разів.
a*? Відповідає символу a, повтореному 0 або більше разів (вибирається найкоротша послідовність із можливих).
a+? Відповідає символу a, повтореному 1 або більше разів (вибирається найкоротша послідовність із можливих).
a?? Відповідає символу a, повтореному 0 або 1 разів (пріоритетна відсутність символу).
a{n,m}? Відповідає символу a, повтореному не менше ніж n і не більше ніж m разів (вибирається найкоротша послідовність із можливих).
a{n,}? Відповідає символу a, повтореному не менше ніж n разів (вибирається найкоротша послідовність із можливих).
Позиція всередині рядка
^ Відповідає початку рядка.
$ Відповідає кінцю рядка.
\b

Відповідає межі слова — позиції між алфавітно-цифровим символом (\w) і не алфавітно-цифровим (\W).

\B

Відповідає відсутності межі слова. Визначається через класи \w і \W.

Екранування
\

Зворотна коса риска перед спеціальним символом [ ] \ ^ $ . | ? * + ( ) { } означає, що цей символ не є спеціальним і повинен інтерпретуватися буквально.

Приклад: \$ відповідає значку долара.

\Q...\E Усі спеціальні символи в інтервалі між \Q і \E інтерпретуються як звичайні символи.