Регулярные выражения
Регулярные выражения могут использоваться при фильтрации ряда представленных в Яндекс Вебмастере данных по 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] или [a-c] |
Соответствует любому (одному) символу из перечисленных (или из диапазона). |
|
[^abc] или [^a-c] |
Соответствует любому (одному) символу, кроме перечисленных (не входящему в диапазон). |
|
\d |
Соответствует цифровому символу. Эквивалентно |
|
\D |
Соответствует символу, не являющемуся цифрой. Эквивалентно |
|
\s |
Соответствует пробелу. Эквивалентно |
|
\S |
Соответствует символу, не являющемуся пробелом. Эквивалентно |
|
\pL |
Соответствует любому символу Unicode. |
|
\w |
Соответствует латинской букве любого регистра, цифре или знаку подчеркивания. При работе с символами Unicode вместо \w используйте класс |
|
\W |
Соответствует любому символу, отличному от латинской буквы любого регистра, цифры или знака подчеркивания. При работе с символами Unicode вместо \w используйте класс |
|
Количество вхождений (квантификаторы) |
|
|
a* |
Соответствует символу |
|
a+ |
Соответствует символу |
|
a? |
Соответствует символу |
|
a{n,m} |
Соответствует символу |
|
a{n,} |
Соответствует символу |
|
a{n} |
Соответствует символу |
|
a*? |
Соответствует символу |
|
a+? |
Соответствует символу |
|
a?? |
Соответствует символу a, повторенному 0 или 1 раз (приоритетно отсутствие символа). |
|
a{n,m}? |
Соответствует символу |
|
a{n,}? |
Соответствует символу |
|
Позиция внутри строки |
|
|
^ |
Соответствует началу строки. |
|
$ |
Соответствует концу строки. |
|
\b |
Соответствует границе слова — позиции между алфавитно-цифровым символом ( |
|
\B |
Соответствует отсутствию границы слова. Определяется через классы |
|
Экранирование |
|
|
\ |
Обратная косая черта перед специальным символом [ ] \ ^ $ . | ? * + ( ) { } означает, что этот символ не является специальным и должен интерпретироваться буквально. Пример: |
|
\Q...\E |
Все специальные символы в интервале между |