Ad Widget

Collapse

if else для функции regsub

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • viktorzzz
    Junior Member
    • May 2020
    • 18

    #1

    if else для функции regsub

    Доброго времени суток. Вопрос такой - существует ли какая-нибудь конструкция вида "if ... else ..." для функции regsub?

    Поясню что хочу сделать - в теге триггера использется функция regsub для того чтобы назначить этому тегу некое значение в зависимости от того что пришло: {{ITEM.VALUE}.regsub("some_regex_here(.*)","\1")}. Само выражение, регулярка и группа отрабатывают нормально. Но в случае если регулярное выражение не совпало - возвращается пустая строка, а я хочу чтобы вернулось некое значение по умолчанию. Есть какая-нибудь возможност реализовать такой функционал?
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Напрямую, т.е. "в лоб" - похоже, нельзя. Но, как часто бывает, можно обойти.
    Скажем, первым шагом добавляем эту строку по умолчанию в конец строки, а вторым шагом ищем первое вхождение.

    Предположим, что реально ищем строку: "User: <ИмяПользователя>", а значение по умолчанию - строка "UNKNOWN".
    Тогда предобработка может выглядеть так:
    Номер шага Регулярное выражение Замена Комментарий
    1 ^(.*)$ \1 User: UNKNOWN Добавляем в конец строки
    через пробел константу
    2 User:\s(\S+).*(?:User: UNKNOWN)?$ \1 Первое найденное вхождение используем,
    второе (если даже есть) - игнорируем
    Ой, блин, тут речь не про препроцессинг, а про функцию regsub().
    Извините, мой ответ не по делу

    Comment

    • Hamardaban
      Senior Member
      Zabbix Certified SpecialistZabbix Certified Professional
      • May 2019
      • 2713

      #3
      По моему нужно плясать от изменения данных (припроцессингом как Kos советует. тем более что есть моща JS) и не морочиться сложными условиями в теле триггера.
      Last edited by Hamardaban; 27-11-2020, 12:39.

      Comment

      • Whols
        Senior Member
        • Jul 2018
        • 133

        #4
        Согласен с коллегами - вы делаете предобработку и вывод. А уже триггер настраиваете от значения ITEMVALUE при выводе. И на пустую строку проверить можно и даже неподдерживаемое значение конвертнуть.

        Comment

        Working...