Регулярные выражения Regex для SEO. Как и где использовать?

Дмитрий Дмитрий

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

В этом блоге мы простым языком объясним, что такое Regex или регулярные выражения, приведем примеры и покажем, как применить их на практике. Материал будет полезен всем, кто так или иначе связан с обработкой данных в SEO.

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

Регулярное выражение (по англ. Regular Expression или просто RegExp) — это определенная конструкция для поиска вхождений (чего бы то ни было) в текстовой строке. 

С помощью этого формального языка можно вычленять из текста, например, телефоны, email-адреса, любые куски текста и так далее. 

Часто RegExp используют программисты при проверке вводимых данных или при написании парсеров, но SEO-специалистам также приходится сталкиваться с регулярками при работе с Google Analytics, Яндекс.Метрикой, RewriteRule в .htaccess или даже в текстовых редакторах для быстрого поиска и замены строк.

Основы регулярных выражений

Рассмотрим популярный пример использования регулярных выражений для настройки редиректа на сайте с версии “без www” на www-домен.

RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]

RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

Регулярные выражения здесь выделены жирным. Что значат эти точки и другие знаки? 

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

«^» — карет, циркумфлекс или просто галочка. Начало строки

Этот символ используется для обозначения начала строки (если не используется внутри конструкции «[ ]»). Например, вы хотите найти сообщение email, строка темы которого начинается со слова «купить», конструкция будет выглядеть просто: ^купить. Без этого знака будут найдены все ключевые слова, содержащие слово «купить», не обязательно в начале.

К примеру, вы можете использовать это в расширенных фильтрах Google Analytics.

Вы можете возразить: зачем использовать регулярки, там где можно обойтись без них? В фильтрах Google Analytics есть пункт «начинается с». Мы абсолютно согласны, и этот пример привели лишь для пояснения синтаксиса, дальше мы увидим, что комбинация разных конструкций решает задачи, которые сложно решить без использования регулярных выражений.

«$» — знак доллара. Конец строки

В отличие от галочки, доллар обозначает конец строки. Уже понятно, что конструкция Киев$ найдет все фразы, заканчивающиеся на слово «киев».

«.» — точка. Любой символ

Точка обозначает любой символ, но только один. Сама по себе точка используется и встречается редко, чаще вместе с другими конструкциями, например, «.*».

«*» — знак умножения, звездочка. Любое число предыдущих символов

Звездочка обозначает любое число символов (или группы символов), которые записаны перед этим знаком, в том числе и отсутствие этого символа. Вместе с предыдущим символом «точка» получается удобная конструкция «.*», означающая любое количество любых символов. Например, выражение

RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

Уже становится более понятным, здесь происходит редирект любой из страниц на новый URL.

«+» — плюсик. Любое положительное число предыдущих символов.

От предыдущего знака «*» плюсик отличается тем, что символ обязательно должен встретиться хотя бы один раз.

«?» — вопросительный знак. Необязательная встречаемость последнего символа

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

Удобно, когда вы не знаете, например, будет ли на конце адреса слеш или нет:

^/articles/?$ 

Или например, когда вы ищите ключевые слова и учитываете определенные опечатки:

купить лест?ницу

Данное выражение найдет все ключевые слова вашей аудитории, где встречались фразы «купить лестницу» и «купить лесницу».

«( )» — круглые скобки. Группировка конструкций.

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

Например, нам нужно перенаправить всех пользователей из подпапки «domain.com/blog/» на поддомен blog.domain.com:

RewriteRule ^blog/(.*)$ http://blog.domain.com/$1 [R=301,L]

Здесь правило ^blog/(.*)$ означает, что адрес начинается с blog/, далее может идти какая-то последовательность символов (например, адрес какой-то статьи в блоге).

«|» — вертикальная линия. Оператор «ИЛИ».

Вертикальная линия обозначает оператор ИЛИ, когда нам нужно перечислить в поиске определенные варианты. Допустим, мы ищем ключевые слова, где встречается слово «купить» или «куплю»:

купить|куплю

Или же хотим посмотреть статистику по нескольким разделам — статьям (/articles/) и пресс-релизам (/pr/):

^/(articles|pr)/

Или возьмем другой пример. Допустим, мы хотим закрыть от индексации поисковыми системами разделы admin, login, register и некоторые другие. 

Чтобы не лезть в код сайта, можно сделать это несколькими строчками кода в .htaccess, используя HTTP-заголовок X-Robots-Tag, который понимают большинство поисковых систем. 


Header set X-Robots-Tag "noindex, nofollow"


Самые известные и широко используемые поисковики (Google, Yandex, Bing, DuckDuckGo) понимают большинство запрещающих директив. Но в разных странах иногда используют локальные поисковые системы, которые могут не воспринимать, например, информацию об индексировании через HTTP-заголовки. 

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

«[ ]» — квадратные скобки. Любой из перечисленных символов.

В квадратных скобках можно перечислить символы и один из них может встречаться в искомом тексте. Если первый символ в этой конструкции – «^» (шапочка/галочка), то массив работает наоборот – символ не должен совпадать с тем, что перечислены в скобках. 

Чтобы не перечислять некоторые популярные последовательности, например, весь алфавит или ряд цифр, можно использовать диапазон: 0-9 означает диапазон от 0 до 9, a-c — диапазон символов от «a» до «с» .

Допустим, мне интересно, как люди находили сайт, когда искали явные инструкции (статьи начинаются на «10 лучших…» или «15 самых…»).

^[0-9]+

Здесь мы увидим, что многие спрашивали 301 редирект, но это не то, что мы искали, поэтому, в расширенном фильтре мы исключим все, что содержит 301.

Настройка фильтра с использованием регулярного выражения для поиска определенных статей

«{ }» — фигурные скобки. Повторение символа несколько раз.

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

Например, чтобы найти в тексте почтовый индекс, длина которого составляет 6 цифр и начинается он на 14, можно использовать следующее регулярное выражение.

14[0-9]{4}

Здесь мы указали 14, а далее последовательность чисел, повторяющаяся 4 раза, итого общая длина будет 6. 

Более сложный пример:

www\.domain\.[a-z]{2,6}

Найдет все доменные зоны, основного домена, включая www.domain.ru и www.domain.travel.

Еще более сложный пример — нам нужна статистика по 2, 3 и 4-словникам по отдельности. Для этого в Google Analytics в отчете по ключевым словам используем фильтр:

^[^\s]+(\s[^\s]+){2}$

Конструкция «s» означает пробел (space), именно им разделяются слова. Здесь [^s]+ указывает, что фраза должна начинаться с любого количества непробелов, далее следует пробел и еще раз какое-то слово. 

Последние два правила «пробел + слово» могут встречаться именно 2 раза (конструкция «( ){2}»). Так мы получаем список всех трехсловников и статистику по ним.

«\» — обратный слеш. Экранирование служебных символов.

В синтаксисе регулярных выражений используются точки, вопросительные знаки и другие знаки, которые также могут быть интересны для поиска. В этом случае помогает символ обратного слеша. Например, для поиска точки, мы экранируем её — «\.», то же самое с другими символами.

Например, в Google Analytics мы настроили одну из целей — использование внутреннего поиска. 

Человек использует поиск, если я вижу в URL конструкцию «/?q=». 

Обратный слэш в регулярных выражениях

 

В настройках это выглядит так: «/\?q\=».

Существуют и другие символы для оперирования регулярными выражениями, полный список вы найдете в Википедии. Но перечисленного выше должно хватить для основных задач SEO-специалиста.

Где SEO специалист может использовать RegEx?

Google Analytics

Google Analytics считается одним из основных инструментов SEO. 

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

Очень часто анализ поведения и пути пользователей на сайте помогает найти новые и эффективные методы SEO продвижения сайта. RegEx можно использовать для сегментирования самых популярных страниц и последующего анализа популярности групп страниц.

Например, использование RegEx для сегментации страниц позволяет анализировать трафик и отказы на основе типов контента в гораздо большем масштабе, чем при использовании традиционных операторов. 

Google Search Console

Определение интента пользователя — важная задача SEO специалиста, и регулярные выражения помогают сегментировать данные по основному намерению пользователей, то есть определить причину, по которой кто-то что-то ищет. Это важный компонент любой стратегии цифрового маркетинга.

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

Больше лайфхаков по GSC вы найдете в этой статье:

Google Search Console: как добавить сайт и лайфхаки для SEO - блог Idea Digital Agency

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

Их также можно использовать для разбивки URL-адресов с помощью фильтров RegEx, чтобы вы могли понять, куда идет трафик и что его движет. Намерение, с которым клиенты находят сайт, соответствует тому, на какую страницу они попадают.

Ранжирование

RegEx можно использовать для сегментации данных ранжирования на основе типов страниц для URL с наивысшим рейтингом для ключевого слова.

Использование тех же шаблонов RegEx что и в GSC возможно для анализа ранжирования по сегментам ключевых слов, например, как поисковая выдача показывает ранжирование для брендовых и небрендовых ключевых слов. 

Аудит сайта в краулере

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

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

  • Поиска текста с сайтов во время сканирования. 

Анализ логов

Регулярные выражения также помогают анализировать файлы сканирования вашего сайта поисковыми ботами. Файлы логов обычно разбиваются и анализируются на основе User Agent для разных ботов поисковых систем.

Поскольку log файлы для больших сайтов могут содержать большое количество страниц, использование шаблонов RegEx для сегментации просканированных URL-адресов упрощает общий анализ, и позволяет выполнять фильтрацию на основе сложных критериев. 

Примеры использования Regex в инструментах SEO специалиста

  1. Пример использования регулярных выражений в Search Console

Например, мы ищем все упоминания о коронавирусе в запросах:

(?i)([ck]ovid|корон[ао]\s?вирус)

Данный запрос найдет все совпадения без учета регистра следующих фраз kovid, covid, коронавирус, короновирус, корона вирус, короно вирус.

Или мы ищем по каким запросам пользователи находят заведение из сферы гастрономии под названием fairy house:

(?i)(кафе|ресторан|бар)\s(f[ae]ir[yi]|фе[ий]ри|сказочный)\s?(h[ao]u[sz]e*|хау[зс]|дом)

С помощью данного запроса мы найдем кучу вариаций названия от бар fairy house или кафе фейрихаус до ресторан сказочный дом с учетом различных возможных ошибок пользователя.

Перебор символов в скобках [ ] идет по алфавиту. В примере выше [зс] будет корректно работать, а вот [сз] будет отбирать только варианты с буквой “с”.

  1. Пример использования в Google Analytics

Например, если нужно исключить статистику о посещениях сайта вашими сотрудниками, вы можете настроить для представления фильтр с регулярным выражением, в котором будут определены все IP-адреса компании. Допустим, это диапазон 198.51.100.1 - 198.51.100.25. Чтобы не вводить каждый из 25 IP-адресов, создайте регулярное выражение вида 198\.51\.100\.\d*, соответствующее всему диапазону.

Если вам нужен фильтр, включающий данные по кампании только из двух городов, вы можете создать регулярное выражение вида Днепр|Киев (Днепр или Киев).

  1. Закрытие панели управления WordPress в .htaccess, открытие её только для вашего IP-адреса


Order Deny, Allow

Deny from All

Allow from 200.20.21.145


Где 200.20.21.145 это, к примеру, ваш IP адрес.

  1. Выделяем небрендовый поисковый трафик

Допустим, у вас есть интернет-магазин, который называется «goodshop.ru». Посредством Google Analytics вы хотели бы отделить поисковый трафик по запросам, не содержащим названия вашего магазина, от брендового поискового трафика. 

Отслеживание динамики изменений небрендированного трафика — один из способов оценки эффективности мер по SEO-оптимизации сайта. Для решения данной задачи можно создать в Google Analytics персонализированный отчет с назначенным фильтром, который будет отсеивать брендовые запросы. Всевозможных вариантов написания названия вашего магазина может быть очень много (не забудьте про опечатки и неверную раскладку клавиатуры). Использование регулярного выражения избавит от необходимости плодить поля фильтра для каждого из вариантов.

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

goodshop|гудшоп|good shop|гуд шоп|good-shop|пщщвырщз

Используемые спецсимволы:

| - символ действует по принципу логического оператора ИЛИ

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

Регулярное выражение в скримин фрог пример

  1. Выбираем определенную категорию страниц на сайте

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

1-ый уровень — главная страница подкаталога по мобильным телефонам:

/catalog/mobile/

2-ой уровень — собраны мобильные телефоны определенных брендов:

/catalog/mobile/apple

/catalog/mobile/samsung

/catalog/mobile/htc

3-ий уровень — непосредственно карточки товаров:

/catalog/mobile/apple/iphone5

/catalog/mobile/samsung/galaxys3

/catalog/mobile/htc/desirev

Нам необходимо в отчете по содержанию Google Analytics выделить только страницы карточек товаров.

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

/catalog/mobile/.+/.+

Используемые спецсимволы:

. — обозначает любой символ: знак препинания, букву, цифру.

+ - обозначает количество повторений предыдущего символа: 1 раз и более.

В данном случае, сочетание спец.символов .+ обозначает любую строку, состоящую хотя бы из одного произвольного символа. Имея четкую структуру сайта, мы знаем, что URI карточки товара состоит из четырех фрагментов, разделенных слэшем. 

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

При этом мы знаем, что в карточке товара мобильного телефона непременно присутствуют еще две части: бренд и модель. Их-то мы и задаем с помощью использования двух комбинаций .+, разделенных слэшем. 

Таким образом, мы определили шаблон адреса страницы карточки товара, который и копируем в поле фильтра отчета.

Поиск регулярного выражения в скриминг фрог

  1. Отслеживаем выполнение целевых действий на сайте

Иногда регулярные выражения могут пригодиться при настройке целей в Google Analytics. Возьмем в качестве примера сайт школы иностранных языков, которая предлагает своим слушателям курсы по четырем иностранным языкам. На сайте присутствует форма заявки, которую посетители могут отправлять с указанием иностранного языка для изучения.

При этом посетители могут выбирать более одного языка в качестве желаемого к изучению. Руководство проекта поставило себе задачу узнать, как часто посетители выбирают более одного языка. Соответственно, необходимо настроить цель в Google Analytics. После отправки заявки отображается страница с одним из следующих URI.

/order?lang=eng

/order?lang=eng&esp

/order?lang=eng&esp&ita

/order?lang=eng&esp&ita&fra

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

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

/order\?lang=.{3}&

Используемые спецсимволы:

{ } — в фигурных скобках можно указать количество повторений предыдущего символа. Соответственно, комбинация символов .{3} обозначает последовательность любых трех символов. В нашем случае, три символа — это обозначение языка. Не забываем экранировать знак вопроса, который также является спецсимволом регулярных выражений.

Таким образом регулярное выражение будет соответствовать всем URI, в которых после знака равно идут три символа с последующим знаком амперсанта. Данные страницы и показываются в тех случаях, когда в отправленной форме указано более одного языка. Что и требовалось отследить.

Как проверить, что регулярное выражение составлено верно

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

А также можно проверить регулярные выражения на тестовой выборке с помощью специальных инструментов. Рекомендуем использовать сайт Regex Pal либо расширение для браузера RegExp Tester.

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

Оставить комментарий