[comment]: # ({35ff4943-5dd1c4b4})
# 15 Exemples d'échappement

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

[comment]: # ({a44d3dec-b5a80d5b})
#### Aperçu

Cette page fournit des exemples d’utilisation de l’échappement correct lors de l’utilisation d’expressions régulières dans différents contextes.

:::notetip
Lors de l’utilisation du constructeur d’expressions de déclencheur, l’échappement correct dans les expressions régulières est ajouté automatiquement.
:::

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

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

**Macro utilisateur avec contexte**

Expression régulière : `\.+\"[a-z]+`<br>
Macro utilisateur avec contexte : `{$MACRO:regex:"\.+\\"[a-z]+"}`

Remarque :

-   les barres obliques inverses ne sont [pas échappées](/manual/config/macros/user_macros_context#important-notes) ;
-   les guillemets sont échappés.
			
**Fonction de macro dans le paramètre de clé d’élément**

Expression régulière : `.+:(\d+)$`<br>
Clé d’élément : `net.tcp.service[tcp,,"{{$ENDPOINT}.regsub(\".+:(\d+)$\",\1)}"]`

Remarque :

-   l’expression régulière à l’intérieur de la fonction de macro `regsub` est entre guillemets doubles (car elle contient une parenthèse fermante) ;
-   les guillemets autour de l’expression régulière sont échappés (car l’ensemble du troisième paramètre de l’élément est entre guillemets doubles) ;
-   le troisième paramètre de la clé d’élément est entre guillemets doubles car il contient une virgule.

**Fonction de macro LLD**

Expression régulière : `\.+\"([a-z]+)`<br>
Macro LLD : `{{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}`

Remarque :

-   les barres obliques inverses ne sont pas échappées ;
-   les guillemets sont échappés.

**Fonction de macro LLD dans le contexte d’une macro utilisateur**

Expression régulière : `\.+\"([a-z]+)`<br>
Macro LLD : `{{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}`<br>
Macro utilisateur avec contexte : `{$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"[a-z]+\", \1)}"}`

Remarque :

-   l’échappement des barres obliques inverses pour LLD ne change pas ;
-   lors de l’insertion de la macro LLD dans le contexte d’une macro utilisateur, il faut la placer dans une chaîne :
   1.   Des guillemets sont ajoutés autour de l’expression de macro ;
   2.   Les guillemets sont échappés ; au total, 3 nouvelles barres obliques inverses sont introduites.

**Paramètre de chaîne d’une fonction (quelconque)** 

`concat` est utilisé comme exemple.

Contenu de la chaîne : `\.+\"[a-z]+`<br>
Expression : `concat("abc", "\\.\\\"[a-z]+")`

Remarque :

-   Les paramètres de chaîne nécessitent l’échappement à la fois des barres obliques inverses et des guillemets.

**Fonction de macro LLD dans le paramètre de chaîne d’une fonction**

Expression régulière : `\.+\"([a-z]+)`<br>
Macro LLD : `{{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}`<br>
Expression : `concat("abc, "{{#MACRO}.iregsub(\"\\.+\\\\\"([a-z]+)\", \\1)}")`

Remarque :

-   Les paramètres de chaîne nécessitent l’échappement à la fois des barres obliques inverses et des guillemets ;
-   Une couche supplémentaire d’échappement est ajoutée, car la macro ne sera résolue qu’après la suppression des guillemets de la chaîne ;

**Macro utilisateur avec contexte dans le paramètre de chaîne d’une fonction**

Expression régulière : `\.+\"[a-z]+`<br>
Macro utilisateur avec contexte : `{$MACRO:regex:"\.+\\"[a-z]+"}`<br>
Expression : `concat("abc, "{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}")`

Remarque :

-   Comme dans l’exemple précédent, une couche supplémentaire d’échappement est nécessaire ;
-   Les barres obliques inverses et les guillemets ne sont échappés que pour l’échappement de niveau supérieur (du fait qu’il s’agit d’un paramètre de chaîne).

**Fonction de macro LLD dans le contexte d’une macro utilisateur dans une fonction**

Expression régulière : `\.+\"([a-z])+`<br>
Macro LLD : `{{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}`<br>
Macro utilisateur avec contexte : `{$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"([a-z]+)\", \1)}"}`<br>
Expression : `concat("abc, "{$MACRO:\"{{#MACRO}.iregsub(\\\"\.+\\\\\\\"([a-z]+)\\\", \\1)}\"}")`

Remarque sur les trois couches d’échappement :

   1. Pour la fonction de macro LLD, sans échappement des barres obliques inverses ;
   2. Pour la macro utilisateur avec contexte, sans échappement des barres obliques inverses ;
   3. Pour le paramètre de chaîne d’une fonction, avec échappement des barres obliques inverses.
			
**Macro utilisateur avec contexte simplement dans une chaîne**

Expression régulière : `\.+\"[a-z]+`<br>
Macro utilisateur avec contexte : `{$MACRO:regex:"\.+\\"[a-z]+"}`<br>
Dans la chaîne d’une expression quelconque, par exemple : `func(arg1, arg2, arg3)="{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}"`

Remarque :

-   Les chaînes nécessitent également l’échappement des barres obliques inverses ;
-   Les chaînes nécessitent également l’échappement des guillemets ;
-   Là encore, il s’agit d’un cas avec 2 niveaux d’échappement :
	1. Échappement pour le contexte de macro utilisateur sans échappement des barres obliques inverses ;
	2. Échappement dû au fait qu’il s’agit d’une chaîne avec échappement des barres obliques inverses.

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