[comment]: # translation:outdated

[comment]: # ({862ea3c3-da69ac43})
# 18 Exemplos de Escaping

[comment]: # ({/862ea3c3-da69ac43})

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

Esta página fornece exemplos de como usar escaping ao utilizar expressões regulares em contextos diferentes. 

:::notetip
Quando usar o construtor da expressão trigger, a escaping correta nas expressões regulares é adicionada automaticamente. 
:::

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

[comment]: # ({3456b32f-137e19de})
#### Exemplo

**Macro do usuário com contexto**

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

Observe que:

-   barras invertidas não estão escapadas [not escaped](/manual/config/macros/user_macros_context#important-notes);
-   aspas estão escapadas.
			
**Função da macro LLD**

Expressão macro: `\.+\"[a-z]+`<br>
Macro LLD: `{{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}`

Observe que:

-   barras investidas não estão escapadas;
-   aspas estão escapadas.

**Função da macro LLD dentro do contexto da macro do usuário**

Expressão regular: `\.+\"[a-z]+`<br>
Macro LLD: `{{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}`<br>
Macro do usuário com contexto: `{$MACRO:"{{#MACRO}.iregsub(\".+\\\"[a-z]+\", \1)}"}`

Observe que:

-   a barra invertida escape para LLD não muda;
-   ao inserir ~~a macro LLD no contexto da macro~~ do usuário, precisamos colocá-la na string:
   1.   Aspas são adicionadas na expressão macro;
   2.   Aspas são escapadas;  3 novas barras invertidas são adicionadas no total.


**Parâmetro de string de função não histórico**

Conteúdo da string: `\.+\"[a-z]+`<br>
Expressão: `concat("abc", "\\.\\\"[a-z]+")`

Observe que:

-   Parâmetros de String exigem escape para barras investidas e aspas. 

**Parâmetro de String de função de histórico**
 
Conteúdo da String: `\.+\"[a-z]+`<br>
Expressão: `find(__ITEM_KEY__,,"regexp","\.+\\"[a-z]+")`

Observe que:

-   barras investidas não estão escapadas;
-   aspas estão escapadas.

**Função do Macro LLD dentro do parâmetro de string de função não histórico**

Expressão regular: `\.+\"[a-z]+`<br>
Macro LLD: `{{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}`<br>
Expressão: `concat("abc, "{{#MACRO}.iregsub(\"\\.+\\\\\"[a-z]+\", \\1)}")`

Observe que:

-  Os parâmetros da String exigem escape para barras investidas e aspas;
-  Outra camada de escape é adicionada, porque a macro será resolvida apenas após a string ser desmarcada;

**Função macro LLD dentro do parâmetro de string de função de histórico**

: `\.+\"[a-z]+`<br>
Macro LLD : `{{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}`<br>
Expressão: `find(__ITEM_KEY__,,"eq","{{#MACRO}.iregsub(\"\.+\\\"[a-z]+\", \1)}")`

Observe que:

-   barras investidas não estão escapadas;
-   aspas estão escapadas.

**Macro do usuário com contexto dentro do parâmetro de string de função não histórico**

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

Observe que:

-   Assim como no exemplo anterior, uma camada extra de escape foi adicionada
-   Barras invertidas e aspas são escape somente no top-level escape (em virtude de ser um parâmetro de string).

**Macro do usuário com contexto dentro do parâmetro de string de função de histórico**

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

Observe que:

-   barras invertidas não estão escapadas;
-   aspas estão escapadas:

**Função macro LLD dentro do macro do usuário com contexto dentro de função não histórico**

Expressão regular: `\.+\"[a-z]+`<br>
Macro LLD: `{{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}`<br>
Macro usuário com contexto: `{$MACRO:"{{#MACRO}.iregsub(\".+\\\"[a-z]+\", \1)}"}`<br>
Expressão: `concat("abc, "{$MACRO:\"{{#MACRO}.iregsub(\\\".+\\\\\\\"[a-z]+\\\", \\1)}\"}")`

Observe que há três camadas de escape:

   1. Para a função macro LLD, sem escape de barras invertidas;
   2. Para macro usuário com contexto, sem escape de barras invertidas;
   3. Para o parâmetro da string de uma função, com escape de barras invertidas.


**Função macro LLD dentro da macro do usuário com contexto dentro de função de histórico**

Expressão regular: `\.+\"[a-z]+`<br>
Macro LLD: `{{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}`<br>
Macro usuário com contexto: `{$MACRO:"{{#MACRO}.iregsub(\".+\\\"[a-z]+\", \1)}"}`<br>
Expressão: `find(__ITEM_KEY__,,"eq","{$MACRO:\"{{#MACRO}.iregsub(\\".+\\\\"[a-z]+\\", \1)}\"}")`

Observe que:

-   barras invertidas não estão escapadas;
-   aspas estão escapadas.

**Macro do usuário com contexto apenas dentro da string**

Expressão regular: `\.+\"[a-z]+`<br>
Usuário macro com contexto: `{$MACRO:regex:"\.+\\"[a-z]+"}`<br>
Dentro da string de uma expressão, por exemplo: `func(arg1, arg2, arg3)="{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}"`

Observe que:

-   As Strings também exigem barras invertidas escapadas;
-   As Strings também exigem aspas escapadas;
-   Novamente um caso com 2 níveis de escape:
	1. Escape para contexto macro do usuário com contexto  sem barra invertida escape; 
	2. Escape por ser uma string com barra invertida escape.

[comment]: # ({/3456b32f-137e19de})
