Регулярные выражения для SEO
Регулярные выражения являются мощным инструментом в арсенале seo-шника. Некоторые специалисты, поневоле сталкивающиеся с регулярными выражениями в .htaccess или Google Analytics, боятся этого непонятного языка, но как только начинают разбираться, входят во вкус и осознают, как эти конструкции облегчают жизнь и становятся мощным инструментом для работы с текстовыми данными. В этой статье простым языком описаны основы регулярных выражений и приведены примеры их использования в SEO и аналитике. Материал будет полезен всем, кто так или иначе связан с обработкой данных в 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.
«^» — карет, циркумфлекс или просто галочка. Начало строки
Этот символ используется для обозначения начала строки (если не используется внутри конструкции «[ ]»). Например, если вы хотите найти все ключевые слова, начинающиеся на слово «купить», конструкция будет выглядеть просто: ^купить. Без этого знака будут найдены все ключевые слова, содержащие слово «купить», не обязательно в начале.
К примеру, вы можете использовать это в расширенных фильтрах Google Analytics.
Вы можете возразить: зачем использовать регулярки, там где можно обойтись без них? В фильтрах Google Analytics есть пункт «начинается с». Я абсолютно согласен, и этот пример привел лишь для пояснения синтаксиса, дальше мы увидим, что комбинация разных конструкций решает задачи, которые сложно решить без использования регулярных выражений.
«$» — знак доллара. Конец строки
В отличие от галочки, доллар обозначает конец строки. Уже понятно, что конструкция москва$ найдет все фразы, заканчивающиеся на слово «москва».
«.» — точка. Любой символ
Точка обозначает любой символ, но только один. Сама по себе точка используется и встречается редко, чаще вместе с другими конструкциями, например, «.*».
«*» — знак умножения, звездочка. Любое число предыдущих символов.
Звездочка обозначает любое число символов (или группы символов), которые записаны перед этим знаком, в том числе и отсутствие этого символа.
Вместе с предыдущим символом «точка» получается удобная конструкция «.*», означающая любое количество любых символов. Например, выражение
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
Уже становится более понятным, здесь происходит редирект любой из страниц на новый URL.
Предположим, в отчетах по страницам я хочу найти данные для страниц из раздела seo-компаний, где оставляли комментарии, чтобы проанализировать поведение этих пользователей. Данные страницы у меня выглядят примерно так:
/companies/seo-studio?commented=1
Здесь меняется лишь средняя часть, а начало и конец остаются одинаковыми. Поэтому, зная уже перечисленные элементы, можно составить регулярное выражение и использовать его в фильтре:
^/companies/.*commented=1$
Получим следующий отчет:
Ещё один полезный пример использования этой конструкции — закрытие панели управления WordPress в .htaccess, открытие её только для вашего IP-адреса:
<FilesMatch ".*"> Order Deny, Allow Deny from All Allow from 200.20.21.145 </FilesMatch>
Где 200.20.21.145 это, к примеру, ваш IP адрес.
«+» — плюсик. Любое положительное число предыдущих символов.
От предыдущего знака «*» плюсик отличается тем, что символ обязательно должен встретиться хотя бы один раз.
«?» — вопросительный знак. Необязательная встречаемость последнего символа
Вопросительный знак указывает на то, что последний символ или группа могут встречаться в тексте, а могут отсутствовать (то есть, их встречаемость не обязательна). Удобно, когда вы не знаете, например, будет ли на конце адреса слеш или нет:
^/articles/?$
Или например, когда вы ищите ключевые слова и учитываете определенные опечатки:
купить лест?ницу
Данное выражение найдет все ключевые слова вашей аудитории, где встречались фразы «купить лестницу» и «купить лесницу».
«( )» — круглые скобки. Группировка конструкций.
Аналогично применению в математике, круглые скобки в регулярных выражениях используются для группировки. И уже для группы символов или правил можно указывать другие правила. Кроме этого, найденные соответствия в скобках возвращаются в отдельные переменные $1, $2 и т.д., в зависимости от порядкового номера группы.
Например, нам нужно перенаправить всех пользователей из подпапки «domain.com/blog/» на поддомен blog.domain.com:
RewriteRule ^blog/(.*)$ http://blog.domain.com/$1 [R=301,L]
Здесь правило ^blog/(.*)$ означает, что адрес начинается с blog/, далее может идти какая-то последовательность символов (например, адрес какой-то статьи в блоге). Всю эту последовательность мы объединяем в скобки и далее используем переменную $1, чтобы сделать постраничный редирект на поддомен.
«|» — вертикальная линия. Оператор «ИЛИ».
Вертикальная линия обозначает оператор ИЛИ, когда нам нужно перечислить в поиске определенные варианты. Допустим, мы ищем ключевые слова, где встречается слово «купить» или «куплю»:
купить|куплю
Или же хотим посмотреть статистику по нескольким разделам — статьям (/articles/) и пресс-релизам (/pr/):
^/(articles|pr)/
Или возьмем другой пример. Допустим, мы хотим закрыть от индексации поисковыми системами разделы admin, login, register и некоторые другие. Чтобы не лезть в код сайта, можно сделать это несколькими строчками кода в .htaccess, используя HTTP-заголовок X-Robots-Tag, который понимают большинство поисковых систем.
<FilesMatch "^/(admin|staff|login|register).*$"> Header set X-Robots-Tag "noindex, nofollow" </FilesMatch>
«[ ]» — квадратные скобки. Любой из перечисленных символов.
В квадратных скобках можно перечислить символы и один из них может встречаться в искомом тексте. Если первый символ в этой конструкции – «^» (шапочка/галочка), то массив работает наоборот – символ не должен совпадать с тем, что перечислены в скобках. Чтобы не перечислять некоторые популярные последовательности, например, весь алфавит или ряд цифр, можно использовать диапазон: 0-9 означает диапазон от 0 до 9, a-c — диапазон символов от «a» до «с» .
Допустим, мне интересно, как люди находили мой сайт, когда искали явные инструкции (статьи начинаются на «10 лучших…» или «15 самых…»).
^[0-9]+
Здесь я увижу, что многие спрашивали 301 редирект, но это не то, что я искал, поэтому, в расширенном фильтре я исключу все, что содержит 301.
И увижу следующие вопросы, на которые можно ответить в одной из статей, если её ещё не было на блоге.
Всего найдено 140 вариантов, среди которых есть очень интересные, вроде «100 топ сайтов копирайтинга» или «5 задач на собеседовании в яндекс» :) Сделаем это ссылкой.
«{ }» — фигурные скобки. Повторение символа несколько раз.
Фигурные скобки используются для указания, сколько именно раз должен встречаться символ или группа символов. Если указано два числа в скобках, через запятую, то это будет интервалом «от и до».
Например, чтобы найти в тексе почтовый индекс, длина которого составляет 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-специалиста.
Ещё несколько примеров
— Поиск записей с ссылками.
Язык SQL тоже предусматривает поиск по соответствию регулярному выражению. Например, у вас есть форум и необходимо найти все посты, где встречается ссылка. SQL-запрос при этом может выглядеть следующим образом:
SELECT * FROM `posts` WHERE `content` RLIKE 'https?://([а-яa-z0-9\-]+\.)+[a-z]{2,7}'
— Замена всех абсолютных ссылок в БД при переезде сайта на другой домен
UPDATE `articles` SET `content`=REPLACE(`content`, 'old-domain.crimea.ua', 'new-domain.ru') WHERE `content` RLIKE 'old-domain\.com'
— Редирект в .htaccess с HTML-версии сайта на PHP
RedirectMatch /(.*)\.html$ /$1.php
— Редирект со страницы /index.php на корневую «/» для избавления от дублей
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://site.com.ua/ [R=301,L]
— Наличие UTM-метки в URL
(?:\?|&)utm=([^&$]+)
— Добавление сегмента в Google Analytics для отслеживания органического трафика
(кликните для увеличения изображения)
— Исключение офисного трафика из статистики Google Analytics
— Блокировка доступа к сканированию сайта роботами Ahrefs и Open Site Explorer.
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^rogerbot [OR] RewriteCond %{HTTP_USER_AGENT} ^AhrefsBot RewriteRule .* - [F]
Выше приведены достаточно не сложные, но часто используемые примеры, и здесь совсем не затронута Яндекс.Метрика, где также можно использовать регулярные выражения. Для тестирования своих конструкций и тренировок с RegExp можно использовать удобный сервис http://www.rubular.com, а здесь можно скачать и распечатать хорошую памятку по регулярным выражениям, если вы решили к ним подойти более серьезно.
Если у вас имеются другие интересные примеры использования регулярных выражений для SEO и аналитики, делитесь ими в комментариях.


Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2025-04-08 » Горшочек, рисуй: 10 бесплатных сервисов для генерации картинок
- 2025-04-08 » SEO-продвижение в 2025 году: 15 трендов, без которых ТОП не светит
- 2025-03-14 » SPF-запись
- 2025-03-07 » SEO на маркетплейсах: как оптимизировать карточку товара для поисковой выдачи
- 2025-02-18 » Топ-10 бесплатных нейросетей для генерации изображений: лучшие ии генераторы 2024 года
- 2025-02-11 » Критическая уязвимость в 1С-Битрикс
- 2025-02-11 » Google Search Console: руководство для начинающих вебмастеров
- 2025-02-11 » Методы измерения результативности рекламных кампаний: плюсы и минусы
- 2025-02-11 » Тренды SEO в 2025 году
- 2025-02-10 » Свой Google в локалке. Ищем иголку в стоге сена
- 2025-01-29 » SEO — это комплексная работа. Шесть главных факторов ранжирования сайтов
- 2025-01-29 » Гайд для главной страницы e-commerce сайта: как оформить, чтобы повысить конверсию
- 2025-01-20 » Krea AI выпустила бесплатную функцию преобразования изображений в 3D-объекты — их можно вращать и вписывать в фотографии
- 2025-01-19 » Отзывы на Яндекс Картах: как пройти модерацию
- 2025-01-15 » Топ-6 лучших российских нейросетей, в которых можно генерировать тексты и изображения бесплатно и без VPN
- 2025-01-14 » 15 бесплатных способов узнать, чем интересуется ваша аудитория
- 2025-01-11 » Бездепозитные бонусы в казино за регистрацию с выводом: особенности и возможности получения
- 2025-01-09 » Новая модель LAM способна выполнять задачи в Word
- 2024-12-26 » Универсальный промпт для нейросети: как выжать максимум из ChatGPT, YandexGPT, Gemini, Claude в 2025
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
Кто мало хочет, тот дешево стоит |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.
Или напишите нам в WhatsApp
Или напишите нам в WhatsApp