Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Форум
    RouterOS
    Условное регулярное выражение для поддомена

    Условное регулярное выражение для поддомена

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Условное регулярное выражение для поддомена, RouterOS
     
    Marlon89
    Guest
    #1
    0
    01.08.2014 22:44:00
    Я просто пытаюсь обнаружить все поддомены, кроме двух, для определённого домена на уровне 7 (для DNS-проксирования). Это должно возвращать true для всех поддоменов example.com, кроме sub1.example.com и sub2.example.com. Я часами пробовал разные варианты с отрицательными просмотром вперёд и назад, но, похоже, это почему-то не поддерживается. Постоянно вылетает ошибка «bad regex: ?+* follows nothing». Может, кто-нибудь подскажет регулярное выражение, которое исключит два поддомена? Спасибо!
     
     
     
    Railander
    Guest
    #2
    0
    12.05.2023 01:55:00
    нужно, чтобы работали lookahead. ^[^/]+\$ совпадает со всем, что не содержит /
     
     
     
    rextended
    Guest
    #3
    0
    12.05.2023 02:10:00
    Слушай, пользователь уже 9 лет терпеливо ждёт твоего «ответа»…
     
     
     
    Railander
    Guest
    #4
    0
    12.05.2023 02:36:00
    Никогда не пойму эти пассивно-агрессивные ответы. Причина, по которой я это нашёл, в том, что я загуглил. А причина, по которой я зарегистрировался здесь, частично в том, чтобы ответить сам себе и помочь всем, кто в будущем будет вынужден это гуглить.
     
     
     
    rextended
    Guest
    #5
    0
    12.05.2023 08:19:00
    Я никогда не пойму эти бессмысленные и очевидные ответы. Причина, по которой я отвечаю именно так, в том, что ваши ответы совершенно бесполезны — не с точки зрения времени, а в контексте, и они не помогают никому, кто потом будет искать решение. Если кто-то на форуме спрашивает, как решить уравнение, есть ли смысл им говорить, что 1+1 равно 2? Не понимаю, почему в 2014 году я не заметил, что он ответил мне.

    Если не учитывать, что сейчас всё зашифровано и почти нет смысла продолжать использовать layer7, а учитывая, что RouterOS не поддерживает расширенный синтаксис RegEx, такой как lookahead и lookbehind, а только базовые функции, отвечу на проблему с небольшой помощью.

    Создайте RegEx Layer 7 с такими требованиями:  
    Легенда:  
    - ноль или более допустимых символов DNS или точка  
    - ? — ровно один допустимый символ DNS или точка  
    - anything > — любое сочетание допустимых символов DNS и точек (.)  

    - Должно точно соответствовать example.com  
    - Не должно соответствовать anything example.com, example.com anything или anything example.com anything  
    - Зато должно подходить всем предыдущим трём примерам, если строка заканчивается на .example.com  
    - Должно соответствовать ?.example.com и ??.example.com и ???.example.com  
    - Должно подходить под * ???.example.com  
    - Когда ровно ???.example.com — должно соответствовать всему, кроме случаев, когда "???" равно sub1 или sub2.
     
     
     
    Railander
    Guest
    #6
    0
    12.05.2023 22:11:00
    Это важно, потому что хотя бы один человек пришёл сюда через гугл: я. Если модераторы форума не хотят, чтобы люди писали в старых темах, они могут легко закрыть темы после определённого времени. Реддит так делает. Что касается твоего отношения, советую выйти на улицу и немного отдохнуть на природе.
     
     
     
    mmw
    Guest
    #7
    0
    30.07.2023 22:00:00
    Я тоже считаю эту ветку интересной и полезной даже спустя годы и надеюсь оставить тут что-то полезное для других. Мне не кажется, что ответ на этот вопрос очевиден, и хотелось бы, чтобы люди продолжали читать и вносить конструктивный вклад в этот форум. Похоже, что Mikrotik использует POSIX Regex (см. https://wiki.mikrotik.com/wiki/Manual:Regular_Expressions), которые, судя по всему, не поддерживают отрицательные просмотр вперёд (negative lookaheads) https://en.wikibooks.org/wiki/Regular_Expressions/POSIX_Basic_Regular_Expressions­. Однако, кажется, что версию такого поиска можно реализовать в regex Mikrotik, но очень, очень громоздким выражением — см. https://stackoverflow.com/questions/15377469/posix-regular-expressions-excluding-a-word-in-an-expression#comment21732636_15377532.
     
     
     
    Amm0
    Guest
    #8
    0
    31.07.2023 03:01:00
    Думаю, суть в том, что нет ни негативного lookahead, ни lookbehind. Единственное отрицание — для символа… например, ты говоришь, что в какой-то позиции НЕ должен быть определённый символ. Теоретически можно искать все варианты с помощью оператора ИЛИ (|), типа ([^s]ub1|s[^u]b1|…), но последовательность быстро становится очень длинной, и поскольку строка может быть короче четырёх символов, нужно ещё больше вариантов с ИЛИ для них. И это только для абстрактного случая sub1 и sub2 — с более длинными или разными последовательностями вообще всё будет сложнее и длиннее.

    Что касается @rextended, если твоя проблема связана с правилами Layer7 firewall… Есть и другие способы решения. Можно просто использовать два Layer7 regex: один для разрешающих правил, другой — для блокирующих, и применять их в двух соответствующих правилах фаервола.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры