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

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

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

Questa pagina fornisce esempi di utilizzo dell'escape corretto quando si usano espressioni regolari in vari contesti.

:::notetip
Quando si utilizza il costruttore di espressioni del trigger, l'escape corretto nelle espressioni regolari viene aggiunto automaticamente.
:::

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

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

**Macro utente con contesto**

Espressione regolare: `\.+\"[a-z]+`<br>
Macro utente con contesto: `{$MACRO:regex:"\.+\\"[a-z]+"}`

Si noti:

-   i backslash [non vengono sottoposti a escape](/manual/config/macros/user_macros_context#important-notes);
-   i segni di virgolette sono sottoposti a escape.
			
**Funzione macro all'interno del parametro della chiave item**

Espressione regolare: `.+:(\d+)$`<br>
Chiave item: `net.tcp.service[tcp,,"{{$ENDPOINT}.regsub(\".+:(\d+)$\",\1)}"]`

Si noti:

-   l'espressione regolare all'interno della funzione macro `regsub` è racchiusa tra doppi apici (perché contiene una parentesi chiusa);
-   i doppi apici attorno all'espressione regolare sono sottoposti a escape (perché l'intero terzo parametro dell'item è racchiuso tra doppi apici);
-   il terzo parametro della chiave item è racchiuso tra doppi apici perché contiene una virgola.

**Funzione macro LLD**

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

Si noti:

-   i backslash non sono sottoposti a escape;
-   i segni di virgolette sono sottoposti a escape.

**Funzione macro LLD all'interno del contesto della macro utente**

Espressione regolare: `\.+\"([a-z]+)`<br>
Macro LLD: `{{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}`<br>
Macro utente con contesto: `{$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"[a-z]+\", \1)}"}`

Si noti:

-   l'escape dei backslash per LLD non cambia;
-   inserendo la macro LLD nel contesto della macro utente, dobbiamo inserirla in una stringa:
   1.   vengono aggiunti i doppi apici attorno all'espressione macro;
   2.   i doppi apici vengono sottoposti a escape; in totale, vengono introdotti 3 nuovi backslash.

**Parametro stringa di una funzione (qualsiasi)** 

`concat` è usato come esempio.

Contenuto della stringa: `\.+\"[a-z]+`<br>
Espressione: `concat("abc", "\\.\\\"[a-z]+")`

Si noti:

-   i parametri stringa richiedono l'escape sia dei backslash sia dei doppi apici.

**Funzione macro LLD all'interno del parametro stringa di una funzione**

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

Si noti:

-   i parametri stringa richiedono l'escape sia dei backslash sia dei doppi apici;
-   viene aggiunto un ulteriore livello di escape, perché la macro verrà risolta solo dopo che la stringa sarà stata privata delle virgolette;

**Macro utente con contesto all'interno del parametro stringa di una funzione**

Espressione regolare: `\.+\"[a-z]+`<br>
Macro utente con contesto: `{$MACRO:regex:"\.+\\"[a-z]+"}`<br>
Espressione: `concat("abc, "{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}")`

Si noti:

-   come nell'esempio precedente, è necessario un ulteriore livello di escape;
-   i backslash e i doppi apici sono sottoposti a escape solo per il livello di escape superiore (in quanto parametro stringa).

**Funzione macro LLD all'interno del contesto della macro utente all'interno di una funzione**

Espressione regolare: `\.+\"([a-z])+`<br>
Macro LLD: `{{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}`<br>
Macro utente con contesto: `{$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"([a-z]+)\", \1)}"}`<br>
Espressione: `concat("abc, "{$MACRO:\"{{#MACRO}.iregsub(\\\"\.+\\\\\\\"([a-z]+)\\\", \\1)}\"}")`

Si notino i tre livelli di escape:

   1. Per la funzione macro LLD, senza escape dei backslash;
   2. Per la macro utente con contesto, senza escape dei backslash;
   3. Per il parametro stringa di una funzione, con escape dei backslash.
			
**Macro utente con contesto semplicemente all'interno di una stringa**

Espressione regolare: `\.+\"[a-z]+`<br>
Macro utente con contesto: `{$MACRO:regex:"\.+\\"[a-z]+"}`<br>
All'interno della stringa di una qualche espressione, per esempio: `func(arg1, arg2, arg3)="{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}"`

Si noti:

-   anche le stringhe richiedono l'escape dei backslash;
-   anche le stringhe richiedono l'escape dei doppi apici;
-   ancora una volta, si tratta di un caso con 2 livelli di escape:
	1. Escape per il contesto della macro utente senza escape dei backslash;
	2. Escape dovuto al fatto che si tratta di una stringa con escape dei backslash.

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