[comment]: # ({35ff4943-5dd1c4b4})
# 15 Exemplos de escape

[comment]: # ({/35ff4943-5dd1c4b4})

[comment]: # ({a44d3dec-b5a80d5b})
#### Visão geral

Esta página fornece exemplos de uso de escape correto ao usar expressões regulares em vários contextos.

:::notetip
Ao usar o construtor de expressões de trigger, o escape correto em expressões regulares é adicionado automaticamente.
:::

[comment]: # ({/a44d3dec-b5a80d5b})

[comment]: # ({c785c1f7-51a937e8})
#### Exemplos

**Macro de usuário com contexto**

Expressão regular: `\.+\"[a-z]+`<br>
Macro de usuário com contexto: `{$MACRO:regex:"\.+\\"[a-z]+"}`

Observação:

-   as barras invertidas [não são escapadas](/manual/config/macros/user_macros_context#important-notes);
-   as aspas são escapadas.
			
**Função de macro dentro do parâmetro da chave do item**

Expressão regular: `.+:(\d+)$`<br>
Chave do item: `net.tcp.service[tcp,,"{{$ENDPOINT}.regsub(\".+:(\d+)$\",\1)}"]`

Observação:

-   a expressão regular dentro da função de macro `regsub` está 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]+)`<br>
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]+)`<br>
Macro LLD: `{{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}`<br>
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:
   1.   Aspas são adicionadas ao redor da expressão da macro;
   2.   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]+`<br>
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]+)`<br>
Macro LLD: `{{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}`<br>
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]+`<br>
Macro de usuário com contexto: `{$MACRO:regex:"\.+\\"[a-z]+"}`<br>
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])+`<br>
Macro LLD: `{{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}`<br>
Macro de usuário com contexto: `{$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"([a-z]+)\", \1)}"}`<br>
Expressão: `concat("abc, "{$MACRO:\"{{#MACRO}.iregsub(\\\"\.+\\\\\\\"([a-z]+)\\\", \\1)}\"}")`

Observe as três camadas de escape:

   1. Para a função de macro LLD, sem escape de barras invertidas;
   2. Para a macro de usuário com contexto, sem escape de barras invertidas;
   3. 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]+`<br>
Macro de usuário com contexto: `{$MACRO:regex:"\.+\\"[a-z]+"}`<br>
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:
	1. Escape para contexto de macro de usuário sem escape de barra invertida;
	2. Escape por ser uma string com escape de barra invertida.

[comment]: # ({/c785c1f7-51a937e8})
