16 Exemplos de escape
Visão geral
Esta página fornece exemplos de uso de escape correto ao usar expressões regulares em vários contextos.
Ao usar o construtor de expressões de trigger, o escape correto em expressões regulares é adicionado automaticamente.
Exemplos
Macro de usuário com contexto
Expressão regular: \.+\"[a-z]+
Macro de usuário com contexto: {$MACRO:regex:"\.+\\"[a-z]+"}
Observação:
- as barras invertidas não são escapadas;
- as aspas são escapadas.
Função de macro dentro do parâmetro da chave do item
Expressão regular: .+:(\d+)$
Chave do item: net.tcp.service[tcp,,"{{$ENDPOINT}.regsub(\".+:(\d+)$\",\1)}"]
Observação:
- a expressão regular dentro da função de macro
regsubestá entre aspas duplas (porque contém parêntese de fechamento); - as aspas ao redor da expressão regular são escapadas (porque todo o terceiro parâmetro do item está entre aspas duplas);
- o terceiro parâmetro da chave do item está entre aspas duplas porque contém uma vírgula.
Função de macro LLD
Expressão regular: \.+\"([a-z]+)
Macro LLD: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
Observação:
- as barras invertidas não são escapadas;
- as aspas são escapadas.
Função de macro LLD dentro do contexto da macro de usuário
Expressão regular: \.+\"([a-z]+)
Macro LLD: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
Macro de usuário com contexto: {$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"[a-z]+\", \1)}"}
Observação:
- o escape de barra invertida para LLD não muda;
- ao inserir a macro LLD no contexto da macro de usuário, precisamos colocá-la em uma string:
- Aspas são adicionadas ao redor da expressão da macro;
- As aspas são escapadas; no total, 3 novas barras invertidas são introduzidas.
Parâmetro de string de função (qualquer)
concat é usado como exemplo.
Conteúdo da string: \.+\"[a-z]+
Expressão: concat("abc", "\\.\\\"[a-z]+")
Observação:
- Parâmetros de string exigem escape tanto para barras invertidas quanto para aspas.
Função de macro LLD dentro do parâmetro de string da função
Expressão regular: \.+\"([a-z]+)
Macro LLD: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
Expressão: concat("abc, "{{#MACRO}.iregsub(\"\\.+\\\\\"([a-z]+)\", \\1)}")
Observação:
- Parâmetros de string exigem escape tanto para barras invertidas quanto para aspas;
- Outra camada de escape é adicionada, porque a macro será resolvida apenas após a string ser desmarcada;
Macro de usuário com contexto dentro do parâmetro de string da função
Expressão regular: \.+\"[a-z]+
Macro de usuário com contexto: {$MACRO:regex:"\.+\\"[a-z]+"}
Expressão: concat("abc, "{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}")
Observação:
- Assim como no exemplo anterior, uma camada adicional de escape é necessária;
- Barras invertidas e aspas são escapadas apenas para o escape de nível superior (por ser um parâmetro de string).
Função de macro LLD dentro do contexto da macro de usuário dentro da função
Expressão regular: \.+\"([a-z])+
Macro LLD: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
Macro de usuário com contexto: {$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"([a-z]+)\", \1)}"}
Expressão: concat("abc, "{$MACRO:\"{{#MACRO}.iregsub(\\\"\.+\\\\\\\"([a-z]+)\\\", \\1)}\"}")
Observe as três camadas de escape:
- Para a função de macro LLD, sem escape de barras invertidas;
- Para a macro de usuário com contexto, sem escape de barras invertidas;
- Para o parâmetro de string de uma função, com escape de barras invertidas.
Macro de usuário com contexto apenas dentro da string
Expressão regular: \.+\"[a-z]+
Macro de usuário com contexto: {$MACRO:regex:"\.+\\"[a-z]+"}
Dentro da string de alguma expressão, por exemplo: func(arg1, arg2, arg3)="{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}"
Observação:
- Strings também exigem escape de barra invertida;
- Strings também exigem escape de aspas;
- Novamente um caso com 2 níveis de escape:
- Escape para contexto de macro de usuário sem escape de barra invertida;
- Escape por ser uma string com escape de barra invertida.