Функции макросов дают возможность индивидуализации значений макросов.
Периодически макрос может раскрыться в значение с которым не всегда легко работать. Значение может быть длинным или содержать определённую подстроку, которая вас интересует и которую вы бы хотели извлечь. Это та задача, где функции макросов могут быть полезны.
Синтаксис функции макросов:
{<макрос>.<функция>(<параметры>)}
где:
(пробел), "
или содержат )
, ,
.Например:
{{ITEM.VALUE}.regsub(шаблон, вывод)} {{#LLDМАКРОС}.regsub(шаблон, вывод)}
ФУНКЦИЯ | ||||
---|---|---|---|---|
Описание | Параметры | Поддерживается для | ||
regsub (<шаблон>,<вывод>) | ||||
Извлечение подстроки при помощи совпадения с регулярным выражением (с учетом регистра). | шаблон - регулярное выражение для поиска совпадения вывод - опции вывода. Для захвата групп поддерживаются местозаменители \1 - \9 (placeholder). \0 вернёт соответствующий текст. | {ITEM.VALUE} {ITEM.LASTVALUE} Макросы низкоуровневого обнаружения (за исключением фильтра низкоуровневого обнаружения) |
||
iregsub (<шаблон>,<вывод>) | ||||
Извлечение подстроки при помощи совпадения с регулярным выражением (без учета регистра). | шаблон - регулярное выражение для поиска совпадения вывод - опции вывода. Для захвата групп поддерживаются местозаменители \1 - \9 (placeholder). \0 вернёт соответствующий текст. | {ITEM.VALUE} {ITEM.LASTVALUE} Макросы низкоуровневого обнаружения (за исключением фильтра низкоуровневого обнаружения) |
||
Если функция используется в поддерживаемых местах, но применён макрос, который не поддерживает функции макросов, тогда макрос раскроется в 'НЕИЗВЕСТНО'.
Если шаблон не соответствует регулярному выражению, тогда макрос раскрывается в 'НЕИЗВЕСТНО' (за исключением макросов низкоуровневого обнаружения, где в этом случае функция будет проигнорирована и макрос останется нераскрытым)
Если функция макросов применяется в макросе в местах, которые не поддерживают функции макросов, тогда функция будет игнорироваться.
Способы в которых можно использовать функции макросов для индивидуализации значений проилюстрированны в следующих примерах, содержащие строки журналов как полученное значение:
Полученное значение | Макрос | Вывод |
---|---|---|
123Log line | {{ITEM.VALUE}.regsub(^[0-9]+, Problem)} | Problem |
123 Log line | {{ITEM.VALUE}.regsub("^([0-9]+)", "Problem")} | Problem |
123 Log line | {{ITEM.VALUE}.regsub("^([0-9]+)", Problem ID: \1)} | Problem ID: 123 |
Log line | {{ITEM.VALUE}.regsub(".*", "Problem ID: \1")} | Problem ID: |
MySQL crashed errno 123 | {{ITEM.VALUE}.regsub(<nowiki>“^(\w+).*?([0-9]+)”, “ Problem ID: \1_\2 ”</nowiki>)} | Problem ID: MySQL_123 |
123 Log line | {{ITEM.VALUE}.regsub("([1-9]+", "Problem ID: \1")} | *НЕИЗВЕСТНО* (некорректное регулярное выражение) |
имяклиента_1 | {{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)} | имяклиента |
имяклиента_1 | {{#IFALIAS}.regsub("(.*)_([0-9]+)", \2)} | 1 |
имяклиента_1 | {{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} | {{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} (некорректное регулярное выражение) |
имяклиента_1 | {$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}"} | {$MACRO:"customername"} |
имяклиента_1 | {$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \2)}"} | {$MACRO:"1"} |
имяклиента_1 | {$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"} | {$MACRO:"{{#M}.regsub(\"(.*)_([0-9]+\", \1)}"} (некорректное регулярное выражение) |
имяклиента_1 | "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \1)}\"}" | "{$MACRO:\"customername\"}" |
имяклиента_1 | "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \2)}\"}" | "{$MACRO:\"1\"}") |
имяклиента_1 | "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" | "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}") (некорректное регулярное выражение) |