[comment]: # translation:outdated

[comment]: # ({new-0458cee0})
# 1 Функции макросов

[comment]: # ({/new-0458cee0})

[comment]: # ({new-c1632a9e})
#### Обзор

Функции макросов дают возможность индивидуализации значений
[макросов](/ru/manual/config/macros).

Периодически макрос может раскрыться в значение с которым не всегда
легко работать. Значение может быть длинным или содержать определённую
подстроку, которая вас интересует и которую вы бы хотели извлечь. Это та
задача, где функции макросов могут быть полезны.

Синтаксис функции макросов:

    {<макрос>.<функция>(<параметры>)}

где:

-   <макрос> - настраиваемый макрос (например {ITEM.VALUE} или
    {\#LLDМАКРОС})
-   <функция> - применяемая функция
-   <параметры> - список параметров функции разделенных запятыми.
    Параметры необходимо заключать в кавычки, если они начинаются с ''
    ''(пробел), `"` или содержат `)`, `,`.

Например:

    {{ITEM.VALUE}.regsub(шаблон, вывод)}
    {{#LLDМАКРОС}.regsub(шаблон, вывод)}

[comment]: # ({/new-c1632a9e})

[comment]: # ({new-a0ad7754})
#### Поддерживаемые функции макросов

|ФУНКЦИЯ|<|<|<|<|
|--------------|-|-|-|-|
|<|**Описание**|**Параметры**|**Поддерживается для**|<|
|**regsub** (<шаблон>,<вывод>)|<|<|<|<|
|<|Извлечение подстроки при помощи совпадения с регулярным выражением (с учетом регистра).|**шаблон** - регулярное выражение для поиска совпадения<br>**вывод** - опции вывода. Для захвата групп поддерживаются местозаменители **\\1 - \\9** (placeholder). **\\0** вернёт соответствующий текст.|{ITEM.VALUE}<br>{ITEM.LASTVALUE}<br>[Макросы низкоуровневого обнаружения](/ru/manual/config/macros/lld_macros) (за исключением фильтра низкоуровневого обнаружения)|<|
|**iregsub** (<шаблон>,<вывод>)|<|<|<|<|
|<|Извлечение подстроки при помощи совпадения с регулярным выражением (без учета регистра).|**шаблон** - регулярное выражение для поиска совпадения<br>**вывод** - опции вывода. Для захвата групп поддерживаются местозаменители **\\1 - \\9** (placeholder). **\\0** вернёт соответствующий текст.|{ITEM.VALUE}<br>{ITEM.LASTVALUE}<br>[Макросы низкоуровневого обнаружения](/ru/manual/config/macros/lld_macros) (за исключением фильтра низкоуровневого обнаружения)|<|

Если функция используется в [поддерживаемых
местах](ru/manual/appendix/macros/supported_by_location), но применён
макрос, который не поддерживает функции макросов, тогда макрос
раскроется в 'НЕИЗВЕСТНО'.

Если шаблон не соответствует регулярному выражению, тогда макрос
раскрывается в 'НЕИЗВЕСТНО' (за исключением макросов низкоуровневого
обнаружения, где в этом случае функция будет проигнорирована и макрос
останется нераскрытым)

Если функция макросов применяется в макросе в местах, которые не
поддерживают функции макросов, тогда функция будет игнорироваться.

[comment]: # ({/new-a0ad7754})

[comment]: # ({new-9423d893})
#### Примеры

Способы в которых можно использовать функции макросов для
индивидуализации значений проилюстрированны в следующих примерах,
содержащие строки журналов как полученное значение:

|Полученное значение|Макрос|Вывод|
|-------------------------------------|------------|----------|
|`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("^([A-Z]+).*([0-9]+)", " Problem ID: \1_\2 ")}`|'' 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)}` (некорректное регулярное выражение)|

[comment]: # ({/new-9423d893})
