Ad Widget

Collapse

Предобработка регулярным выражением

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Victor Sklyarov
    Senior Member
    • Apr 2016
    • 184

    #1

    Предобработка регулярным выражением

    То ли что-то я не так делаю в шаблоне регулярки, то ли некорректная реализация регулярки в zabbix, то ли какое то подмножество отличное от тестового на https://regex101.com
    Образец ["172.24.69.35","10.24.69.197","192.168.0.1"]
    Регулярка (172\.\d{1,3}\.\d{1,3}\.\d{1,3})|(10\.\d{1,3}\.\d{ 1,3}\.\d{1,3}) выбираем \1,\2
    ответ на тестере
    Match1 172.24.69.35
    Match2 10.24.69.19
    Ответ в zabbix - 172.24.69.35,
    Пробую изменить регулярку
    (172|10)(\.\d{1,3}\.\d{1,3}\.\d{1,3}) выбираем \1\2,\3\4
    Ответ в zabbix - 172.24.69.35,
    На тестере всё выбирается. Правда на тестере стоит опция /g - не возвращаться после первого совпадения. Есть ли возможность включить эту опцию в предобработке?​​
  • Semiadmin
    Senior Member
    • Oct 2014
    • 1625

    #2
    Если честно, не очень понял задачу. Но мне кажется, что валидный JSON удобнее разбирать через JSONPath, нежели регуляркой.

    Comment

    • Kos
      Senior Member
      Zabbix Certified SpecialistZabbix Certified Professional
      • Aug 2015
      • 3404

      #3
      Предобработка Zabbix с использованием регулярных выражений используется для того, чтобы извлечь из исходного значения какую-то часть или переупорядочить строку, поэтому предполагается, что у вас значение всегда соответствует заданному шаблону (иначе генерируется ошибка).
      (172|10)(\.\d{1,3}\.\d{1,3}\.\d{1,3}) выбираем \1\2,\3\4
      В этом выражении две группы захвата (две пары скобок), поэтому ссылки \3 и \4, ссылающиеся на третью и четвёртую группу, всегда будут возвращать пустую строку.
      Правда на тестере стоит опция /g
      Вот этого в предобработке Zabbix с использованием регулярных выражений сделать нельзя; всегда будет возвращаться только первое совпадение.
      Если очень надо обрабатывать несколько вхождений, то это можно обойти, если использовать не шаг предобработки "регулярное выражение", а "JavaScript" с примерно такой структурой:
      Code:
      //$1, $2, $3 и $4 в подстановке - соответственно ссылки на содержимое первой - четвёртой групп захвата
      return value.replace(/ваше_регулярное_выражение/gm,"$1$2,$3$4");
      Но, в принципе, я присоединяюсь к мнению коллеги Semiadmin:
      валидный JSON удобнее разбирать через JSONPath, нежели регуляркой

      Comment

      Working...