Перейти к содержанию

Regex для начинающих

Регулярные выражения (regex) — это мощный инструмент для поиска паттернов в тексте. Этот гайд объясняет основы regex простым языком с примерами для использования в триггерах Имперского Стражника.

Основные символы

Обычные символы

Обычные буквы и цифры ищут сами себя: - привет — найдёт слово "привет" - 123 — найдёт цифры "123"

Специальные символы

Точка . — любой символ

  • к.т — найдёт "кот", "кит", "кат", "к5т"
  • а. — найдёт "ах", "ай", "а1"

Экранирование \ — отменяет специальное значение

  • \. — найдёт точку
  • \? — найдёт знак вопроса
  • \\ — найдёт обратный слэш

Квантификаторы (количество повторений)

Звёздочка * — 0 или больше раз

  • ха* — найдёт "х", "ха", "хаа", "хааа"
  • спам* — найдёт "спа", "спам", "спамм"

Плюс + — 1 или больше раз

  • ха+ — найдёт "ха", "хаа", "хааа" (но НЕ "х")
  • о+ — найдёт "о", "оо", "ооо"

Вопрос ? — 0 или 1 раз (необязательный символ)

  • привет!? — найдёт "привет" и "привет!"
  • https? — найдёт "http" и "https"

Фигурные скобки {n,m} — от n до m раз

  • \d{3} — ровно 3 цифры
  • \d{10,} — 10 или больше цифр (номера телефонов)
  • а{2,4} — от 2 до 4 букв "а": "аа", "ааа", "аааа"

Классы символов

Квадратные скобки [...] — один из символов

  • [abc] — найдёт "a", "b" или "c"
  • [0-9] — любая цифра от 0 до 9
  • [а-я] — любая русская буква
  • [a-zA-Z] — любая английская буква

Отрицание [^...] — любой символ КРОМЕ указанных

  • [^0-9] — любой символ, кроме цифр
  • [^а-яА-Я] — любой символ, кроме русских букв

Готовые классы

  • \d — любая цифра (равносильно [0-9])
  • \w — буква, цифра или подчёркивание
  • \s — пробел, табуляция, перенос строки

Альтернативы и группировка

Вертикальная черта | — выбор (ИЛИ)

  • кот|пёс — найдёт "кот" или "пёс"
  • да|нет|может быть — найдёт любой из трёх вариантов

Круглые скобки (...) — группировка

  • (спам)+ — найдёт "спам", "спамспам", "спамспамспам"
  • (ха)+ — найдёт "ха", "хаха", "хахаха"
  • (при|по)вет — найдёт "привет" или "повет"

Якоря (позиции)

Начало ^ и конец $

  • ^привет — "привет" в начале текста
  • пока$ — "пока" в конце текста
  • ^слово$ — только "слово", без других символов

Граница слова \b

  • \bкот\b — найдёт отдельное слово "кот", но не "котик" или "скотина"
  • \b\d+\b — найдёт отдельные числа

Практические примеры для Guard

Фильтрация ссылок

https?://.*

Найдёт любую ссылку начинающуюся с http:// или https://

Как работает: - https? — "http" и необязательная "s" - :// — буквально "://" - .* — любые символы до конца

Упоминания и каналы

@\w+

Найдёт @username, @channel

Как работает: - @ — символ @ - \w+ — одна или больше букв/цифр

Номера телефонов

\d{10,}

Найдёт последовательность из 10+ цифр

Как работает: - \d — цифра - {10,} — 10 или более раз

Блокировка спам-слов

(спам|реклама|продам|куплю)

Найдёт любое из этих слов

Как работает: - (...) — группа - | — выбор между вариантами

Фильтр повторяющихся символов

(.)\1{4,}

Найдёт 5+ одинаковых символов подряд (ааааа, 11111)

Как работает: - (.) — любой символ (сохраняется в группу) - \1 — повторение первой группы (тот же символ) - {4,} — ещё 4+ раза (итого 5+)

Блокировка e-mail

\w+@\w+\.\w+

Найдёт адреса электронной почты

Как работает: - \w+ — буквы/цифры (имя) - @ — символ @ - \w+ — буквы/цифры (домен) - \. — точка (экранирована) - \w+ — буквы/цифры (зона)

Капс (заглавные буквы)

[A-ZА-Я]{5,}

Найдёт 5+ заглавных букв подряд

Как работает: - [A-ZА-Я] — любая заглавная буква (английская или русская) - {5,} — 5 или более раз

Эмодзи-спам

[\u{1F600}-\u{1F64F}]{5,}

Найдёт 5+ эмодзи подряд

Блокировка промокодов

\b[A-Z0-9]{5,10}\b

Найдёт промокоды вида ABC123, PROMO2024

Как работает: - \b — граница слова - [A-Z0-9] — заглавные буквы или цифры - {5,10} — от 5 до 10 символов - \b — граница слова

Советы для начинающих

1. Начинайте просто

Не пытайтесь сразу написать сложное выражение. Начните с простого и усложняйте постепенно.

2. Тестируйте перед применением

Используйте сайты типа regex101.com для тестирования: 1. Выберите режим JavaScript 2. Включите флаг i (case insensitive) 3. Вставьте примеры текста 4. Проверьте, что паттерн работает правильно

3. Используйте уведомления для проверки

Перед применением бана/мута, создайте триггер с действием "уведомление" и проверьте, правильно ли он срабатывает.

4. Экранируйте специальные символы

Если нужно найти . (точку), ? (вопрос), * (звёздочку), используйте \., \?, \*

5. Не усложняйте без необходимости

Если можно использовать условие "содержит" вместо regex — используйте его. Regex нужен для сложных паттернов.

Частые ошибки

❌ Забыли экранировать точку

google.com

Найдёт "googleXcom", "google com", "google1com"

✅ Правильно

google\.com

Найдёт только "google.com"


❌ Неправильная группировка

привет|пока всем

Найдёт "привет" или "пока всем" (не то что нужно)

✅ Правильно

(привет|пока) всем

Найдёт "привет всем" или "пока всем"


❌ Забыли про границы слова

бот

Найдёт "бот", "работа", "ботинок"

✅ Правильно

\bбот\b

Найдёт только "бот"

Полезные ресурсы

Примеры готовых паттернов

Социальные сети

(vk\.com|t\.me|instagram\.com|tiktok\.com)

Криптовалюта

\b[13][a-km-zA-HJ-NP-Z1-9]{25,34}\b

Биткоин-адреса

IP-адреса

\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}

Домены

\b[a-z0-9-]+\.(ru|com|net|org)\b

Реклама

(подпис|реклам|промо|скид|продам|куплю|@\w+)

💡 Помните: В Имперском Стражнике все regex выполняются с флагом i (без учёта регистра), поэтому СПАМ, спам и СпАм — будут найдены одинаково.