Регулярные выражения
Регулярные выражения могут использоваться при фильтрации ряда представленных в Яндекс Вебмастере данных по 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 исключаются некоторые символы:
?
,#
,&
, а также точка (.
). Например, для URLhttp://example.com/?
,http://example.com/#
,http://example.com/?var=1&
сравнение будет производиться сhttp://example.com/
,http://example.com/
,http://example.com/?var=1
соответственно. В случае, если пользователь ввел URLhttp://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 используйте класс |
\W | Соответствует любому символу, отличному от латинской буквы любого регистра, цифры или знака подчеркивания. При работе с символами Unicode вместо \w используйте класс |
Количество вхождений (квантификаторы) | |
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 | Соответствует границе слова — позиции между алфавитно-цифровым символом ( |
\B | Соответствует отсутствию границы слова. Определяется через классы |
Экранирование | |
\ | Обратная косая черта перед специальным символом Пример: |
\Q...\E | Все специальные символы в интервале между \Q и \E интерпретируются как обычные символы. |
Допустимые варианты | |
---|---|
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 используйте класс |
\W | Соответствует любому символу, отличному от латинской буквы любого регистра, цифры или знака подчеркивания. При работе с символами Unicode вместо \w используйте класс |
Количество вхождений (квантификаторы) | |
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 | Соответствует границе слова — позиции между алфавитно-цифровым символом ( |
\B | Соответствует отсутствию границы слова. Определяется через классы |
Экранирование | |
\ | Обратная косая черта перед специальным символом Пример: |
\Q...\E | Все специальные символы в интервале между \Q и \E интерпретируются как обычные символы. |