宏函数提供了能自定义 宏 值的功能。
有时宏可能会解析为一个不一定易于处理的值。它可能很长,或包含你想提取的感兴趣的特定子字符串。那么此时宏函数就发挥了作用。
宏函数的语法为:
其中:
"
或者包含 )
, ,
这些符号开头,则必须用引号括起来。例如:
函数 | ||||
---|---|---|---|---|
描述 * | 参数** **可 | 持于** | ||
regsub (<pattern>,<output>) | ||||
通过正则表达式匹配提取的子字符串(区分大小写)。 pattern - 匹配的正则表达式 |
{ITEM.VALUE} output - 输出的选项。支持 \1 - \9 占位符来匹配组。 \0 返回匹配的文本。 {ITEM.LASTVALUE} |
<低级别发现宏 (除了在低级别发现规则过滤器中) | ||
iregsub (<pattern>,<output>) | ||||
通过正则表达式匹配提取的子字符串(不区分大小写)。 pattern - 匹配的正则表达式 |
{ITEM.VALUE} output - 输出的选项。支持 \1 - \9 占位符来匹配组。 \0 返回匹配的文本。 {ITEM.LASTVALUE} |
<低级别发现宏 (除了在低级别发现规则过滤器中) |
如果在 受支持的位置 使用函数,但是应用于不支持宏函数的宏,那么宏的计算结果为'未知'。
如果pattern不是一个正确的正则表达式,那么宏的计算结果为'未知'(低级别发现宏除外,在这种情况下,函数将被忽略,宏将保持未展开)
如果宏函数应用于不支持宏函数的位置的宏,那么该函数将被忽略。
下面的例子说明了宏函数用于自定义宏值的方法,这些宏值包含“日志行”作为接收值:
接收值 宏 | 输出 | |
---|---|---|
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("^(\w+).*?([0-9]+)", " Problem ID: \1_\2 ")} |
'' Problem ID: MySQL_123 '' |
123 Log line |
{{ITEM.VALUE}.regsub("([1-9]+", "Problem ID: \1")} |
*UNKNOWN* (无效的正则表达式) |
customername_1 |
{{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)} |
customername |
customername_1 |
{{#IFALIAS}.regsub("(.*)_([0-9]+)", \2)} |
1 |
customername_1 |
{{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} |
{{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} (无效的正则表达式) |
customername_1 |
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}"} |
{$MACRO:"customername"} |
customername_1 |
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \2)}"} |
{$MACRO:"1"} |
customername_1 |
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"} |
{$MACRO:"{{#M}.regsub(\"(.*)_([0-9]+\", \1)}"} (无效的正则表达式) |
customername_1 |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \1)}\"}" |
"{$MACRO:\"customername\"}" |
customername_1 |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \2)}\"}" |
"{$MACRO:\"1\"}") |
customername_1 |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}") (无效的正则表达式) |