Ad Widget

Collapse

Как сделать чтобы регулярка возвращала значение или 0 если ничего не найдено?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Victor Vislobokov
    Senior Member
    • Aug 2018
    • 298

    #1

    Как сделать чтобы регулярка возвращала значение или 0 если ничего не найдено?

    Объясняю в деталях, что хочу.
    Есть некий элемент данных, хранящий данные в виде последовательности строк вида КЛЮЧ: ЗНАЧЕНИЕ.
    Есть зависимые от него элементы данных, значение которых получается путём парсинга данных основного элемента данных с помощью регулярного выражения.
    Проблема в том, что в основном элементе данных может отсутствовать нужный ключ, что (в моём случае) означает, что значение этого ключа нулевое.
    Но в этом случае, зависимый элемент данных (из-за несработавшей регулярки) не содержит данных, т.е. не ноль, а их просто нет. Как-то возможно, чтобы всё-таки возвращался ноль?
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Вроде как в версии 4.2 возможность настраивать подобные вещи теперь штатный фунционал.

    Регулярным же выражением это можно сделать только с некоторыми извращениями: скажем, добавляя предварительный шаг препроцессинга, в котором принудительно добавлять ваш ключ со значением "ноль" в конец строки, скажем, так: в качестве регулярного выражения указать:
    Code:
    (.*)
    а в качестве замены - "\1 ВашКлюч:0".
    Тогда следующим шагом препроцессинга с помощью регулярного выражения извлекать только первое найденное значение ключа.

    Comment

    • Semiadmin
      Senior Member
      • Oct 2014
      • 1625

      #3
      Если значения ключей числовые, то достаточно просто:
      Code:
      ^key1:([\d.]*)|.*                      0\1



      P.S. Легче задачу решить, чем тут эти смайлики побороть
      Last edited by Semiadmin; 25-04-2019, 10:42.

      Comment

      • Victor Vislobokov
        Senior Member
        • Aug 2018
        • 298

        #4
        Semiadmin, а ведь сработало, чорт подери! Магия какая-то. Я до сих пор не пойму почему Видимо по первому совпадению ничего не нашлось, по второму нашлось, но не то, что нужно, поэтому \2 вернул пусто, что сложилось с нулём построчно и получился в итоге ноль.
        Спасибо всем за ответы.

        Comment

        Working...