Где применяются регулярные выражения
Регулярное выражение — шаблон для поиска текста. В SEO он нужен постоянно: отфильтровать адреса в отчёте вебмастера, найти в выгрузке краулера страницы с параметрами, выбрать группу страниц в аналитике, записать правило перенаправления на сервере. Один шаблон охватывает тысячи адресов сразу.
Основные конструкции
| Запись | Что означает | Пример |
|---|---|---|
^ и $ | Начало и конец строки | ^/blog/ — адреса, начинающиеся с /blog/ |
. | Любой символ | a.c — abc, a1c |
[abc] | Один из перечисленных символов | [0-9] — любая цифра |
+, *, ? | Один и более, любое число, ноль или один | [0-9]+ — число |
(a|b) | Один из вариантов | (kupit|snyat) |
[^&]+ | Любые символы, кроме амперсанда | Значение параметра |
Готовые шаблоны для SEO
| Задача | Выражение | Что находит |
|---|---|---|
| Адреса с параметрами | [?] | Любой адрес со знаком вопроса |
| Метки кампаний | [?&]utm_[a-z]+= | Параметры utm_source, utm_medium и другие |
| Заглавные буквы в пути | ^[^?]*[A-Z] | Адреса с заглавными буквами до параметров |
| Длинные числовые идентификаторы | [0-9]{6,} | Числа из шести и более цифр |
| Адреса без слеша в конце | [^/?]$ | Строки, не заканчивающиеся слешем |
| Страницы пагинации | (page=|/page/)[0-9]+ | Номера страниц в двух форматах |
| Двойные слеши в пути | [^:]// | Повторяющиеся слеши в адресе |
Пример в Python
import re
pattern = re.compile(r"[?&]utm_[a-z]+=")
with open("urls.txt", encoding="utf-8") as f:
for line in f:
url = line.strip()
if pattern.search(url):
print(url)
Такой скрипт найдёт в списке адресов все, где есть метки кампаний. Тот же шаблон подойдёт для фильтра в отчёте вебмастера или аналитики, если инструмент поддерживает регулярные выражения: синтаксис у разных систем немного отличается, уточняйте в справке.
Правила сервера
rewrite ^/old-blog/(.*)$ /blog/$1 permanent;
Выражение принимает любой адрес, начинающийся с /old-blog/, и переносит остаток пути в новый адрес. Такие правила легко сделать слишком широкими, поэтому проверяйте их до выкладки: как безопасно тестировать правила сервера, массовая генерация правил.
Как не ошибиться
- Проверяйте шаблон на реальных примерах: и на тех, что должны совпасть, и на тех, что не должны.
- Привязывайте начало и конец, если нужно точное совпадение: без
^и$шаблон найдёт совпадения где угодно. - Остерегайтесь жадных выражений:
.*захватывает слишком много. - Экранируйте специальные символы, если ищете их буквально; в выражениях выше используются классы символов, чтобы обойтись без экранирования.
- Сохраняйте удачные шаблоны в общий документ: очистка адресов регулярными выражениями.
Связанные материалы. Регулярные выражения используются и при сканировании крупных сайтов: как настроить сканирование, и при сравнении адресов до и после переезда: сравнение адресов.
Частые вопросы
Зачем регулярные выражения SEO-специалисту?
Чтобы одним шаблоном охватить тысячи адресов: отфильтровать отчёты, найти проблемы в выгрузках и записать правила сервера.
Как проверить выражение до применения на сервере?
На наборе реальных адресов, которые должны и не должны совпасть, в тестовой среде или онлайн-проверке, прежде чем выкладывать правило.
Почему опасны слишком широкие выражения?
Они захватывают лишние адреса: правило перенаправления может задеть корректные страницы и сломать работу сайта.
Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.