Простые регулярные выражения: символы и примеры

MikroTik в Красноярске — три практических курса в ноябре 2026!

С 11 по 21 ноября в Красноярске пройдут очные тренинги MikroTik: MTCNA, MTCRE и MTCTCE.

Работаете с MikroTik и хотите не просто знать команды RouterOS, а понимать, как всё работает? Приходите прокачивать навыки сетевого администрирования!

Расписание курсов

11–14 ноября — MTCNA

Базовый курс MikroTik: настройка RouterOS, маршрутизация, Firewall, NAT, VPN, DHCP, Wi-Fi и основы управления трафиком.

Программа и регистрация

16–18 ноября — MTCRE

Продвинутая маршрутизация: OSPF, несколько интернет-провайдеров (MultiWAN), резервирование каналов, балансировка нагрузки, VPN и VLAN.

Программа и регистрация

19–21 ноября — MTCTCE

Управление трафиком: Firewall, NAT, Mangle, Packet Flow, QoS, очереди и приоритизация трафика.

Программа и регистрация

Почему стоит прийти?

  • Максимум практики на реальном оборудовании MikroTik.
  • Разбираем не только настройки, но и логику работы RouterOS.
  • Реальные инженерные задачи, лабораторные работы и живое общение с тренером.
  • Обучение проводит Кирилл Васильев — сертифицированный тренер MikroTik с 2016 года, практикующий сетевой инженер.
  • Учебные материалы, оборудование, обеды и кофе-брейки включены в стоимость.
  • Возможность пройти несколько курсов подряд со скидкой.

Место проведения: Красноярск, ул. Марковского, 81.

Важно: для участия в MTCRE и MTCTCE необходим сертификат MTCNA. Его можно получить на первом тренинге.

Не ограничивайтесь привычными настройками — научитесь понимать RouterOS и уверенно решать сложные сетевые задачи!

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

Вопросы и запись:
manager@mt-courses.ru

Сайт:
https://mt-courses.ru

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

Диалекты регулярных выражений отличаются. Примеры статьи близки к POSIX-подобному синтаксису; перед использованием проверяйте поддержку конкретной конструкции в RouterOS, shell, редакторе или языке программирования.

Сразу в бой

Не сильно углубляясь, только поверхностно.

Любой символ (.)

Предположим что у нас есть строка ятакустал.vasilevkirill.ru и нам необходимо убедиться в том, что в данной строке присутствует домен vasilevkirill.ru.

Регулярное вырождение будет следующим vasilevkirill\.ru первое, что бросается в глаза это обратный слэш, в regexp много специальных символов, и если вам необходимо именно выбрать спец символ, то его необходимо экранировать.

Точка обозначает любой символ например если не экранировать точку, то под запрос попадёт и такая запись ятакустал.vasilevkirill1ru, конечно такой вариант нас не устроит.

Повторение неограниченное кол-во раз (*)

Так как мы ищем среди неопределённого количество поддоменов, нам необходимо поправить наше выражение .*\.vasilevkirill\.ru.

Первая точка обозначает что любой символ, а звездочка после, обозначает, то что стоит перед звёздочкой, повторяется несколько раз. Далее символ точки, так как он экранирован и дальше домен.

Конец строки ($)

Естественно результат нас точно не устроит так как теоретически может быть строка например такая ятакустал.vasilevkirill.ru.webarchive.org и выборка такого результата нас не устроит. Для того чтобы указать, что строка должна заканчиваться указывайте символ доллара ($) .*\.vasilevkirill\.ru$.

Начало строки (^)

А что делать если нам необходимо не поддоменов, а только домен, изменим наше выражение указав в самом начале символ карет (^) ^vasilevkirill\.ru$

  • ^ — Начало строки
  • vasilevkirill
  • .- символ точки
  • ru
  • $ — конец строки

Наборы ([])

У нас есть документ со строками

ятакустал.vasilevkirill.ru
первыыйраз.ятакустал.vasilevkirill.ru
второйраз.ятакустал.vasilevkirill.ru
третийраз.ятакустал.vasilevkirill.ru
явсё.ятакустал.vasilevkirill.ru
янеустал.vasilevkirill.ru
imtired.vasilevkirill.ru
imnotired.vasilevkirill.ru

Нам необходимо выбрать только записи с поддоменов второго уровня, укажем выражение ^[a-z]*\.vasilevkirill\.ru$ то что указанно в группе (между квадратными скобками) обозначает любой символ из набора, есть специальные наборы например любая буква латиницей в нижнем регистре обозначает [a-z] если вам необходимо выбрать и заглавные тоже то можно указать так [a-zA-Z]. Если необходимо выбрать кириллицу, то укажите [a-zA-Za-яA-Я] и наше выражение принимает немного другой вид ^[a-zA-Za-яA-Я]*\.vasilevkirill\.ru$.

Что бы понять группы, приведу ещё пример, следующий текст все строки кроме последней попадут под выражение ^[porno]*\.vasilevkirill\.ru

ppppp.vasilevkirill.ru
ooooo.vasilevkirill.ru
rrrrr.vasilevkirill.ru
nnnnn.vasilevkirill.ru
porno.vasilevkirill.ru
ornop.vasilevkirill.ru
rnopo.vasilevkirill.ru
nopor.vasilevkirill.ru
noposr.vasilevkirill.ru

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

Группы (())

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

Или (|)

У нас есть несколько доменов, и необходимо всех их найти, при этом отличие только доменом первого уровня.

vasilevkirill.ru
vasilevkirill.com
vasilevkirill.org
vas.ru
mail.ru

Наше выражение ^vasilevkirill\.(ru|com|org)$ мы собрали группу в круглые скобки и через оператор ИЛИ (вертикальная черта), нашли все наши домены которые заканчиваются на перечисленные домены первого уровня.

Повторение ({}+*)

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

vpn-1.vasilevkirill.ru
vpn-2.vasilevkirill.ru
vpn-10.vasilevkirill.ru
vpn-20.vasilevkirill.ru
vpn-100.vasilevkirill.ru
vpn-200.vasilevkirill.ru
vpn-1000.vasilevkirill.ru
vpn-root.vasilevkirill.ru
vpn-notroot.vasilevkirill.ru

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

Наше выражение vpn\-[0-9]{1,3}\.vasilevkirill\.ru$.

[0-9] — любое число {1,3} — должно повториться от одного до трёх раз

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

Знак + это синоним для {1,} — один и более повторений.

Группы (()) замена

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

83?@gc46t5RXuj:user1
9g#2?U&%$4x!7P:user2
!8&5@f?Ke6#NpJ:user3
d#&9e!$36?@L%7:user4
49?2uVdi!k5&p8:user5
@%8#6V!2nmC1uS:user6
9s?W17@#huVm5$:use7
128sE3Wm57&?#B:user8
84k#vBTY&1G?u!:user9
&7!#68@1$w?V5%:user10
5%KFr3Hj618?d9:user11
27z4Y%t@3a#E6Q:user12
SQ12?aK3&RLz#U:user13
%?KV596w&c!#$1:user14
9v5%8E6mKL?#k4:user15
?7#5Y%uH1G8EQn:user16
!Y$472@UhA?81N:user17
ML75&8@q9T4R?#:user18
uL8#39g2!75b4@:good
n@&Wa#54%u7s6g:kirill

Предположим, что у нас есть файл с таким содержимым, и мы хотим создать в MikroTik записи в ppp secret, понятно что 20 записей можно и руками, но “я так устал” и предпочитаю руками делать по минимум, да и записей может быть тысячи и более. Да и не суть в целях, а суть в примере.

С начало определим, свойства нашего листа, пароль стоит первым, далее идёт разделитель в виде двоеточия и далее имя пользователя.

Подберём регулярное выражение — ^.*\:.*$ — тут всё просто

  • ^ — начало строки.
  • .* — любой символ повторяющийся неограниченное количество раз.
  • \: — наш разделитель, на всякий случая экранируем его.(иногда может и не требоваться экранировать)
  • .* — любой символ повторяющийся неограниченное количество раз.
  • $ — конечно строки.

Теперь наши значения обернём в группы, просто в круглые скобки ^(.*)\:(.*)$, а теперь мы можем получить значения в этих группах $1 — первая группа, $2- вторая и т.д.

И предположим мы хотим сформировать строки следующего вида./ppp secret add name=username password=password тогда получается следующая картина.

^(.*)\:(.*)$ — строка для поиска /ppp secret add name=$2 password=$1 — строка для замены

пример в notepad++

Васильев Кирилл vasilev kirill regexp simple

Результат, а что с ним делать дальше вы наверное знаете.

Васильев Кирилл vasilev kirill regexp simple

Как проверить результат

  • Проверьте выражение на совпадающей и несовпадающей строке.
  • Добавьте граничные случаи: пустую строку, кириллицу и специальный символ.
  • Уточните, требуется полное совпадение или поиск подстроки, и расставьте якоря.

Источники и связанные материалы

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