16 Exemples d’échappement
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.
Lors de l’utilisation du constructeur d’expressions de déclencheur, l’échappement correct dans les expressions régulières est ajouté automatiquement.
Exemples
Macro utilisateur avec contexte
Expression régulière : \.+\"[a-z]+
Macro utilisateur avec contexte : {$MACRO:regex:"\.+\\"[a-z]+"}
Remarque :
- les barres obliques inverses ne sont pas échappées ;
- les guillemets sont échappés.
Fonction de macro dans le paramètre de clé d’élément
Expression régulière : .+:(\d+)$
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
regsubest 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]+)
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]+)
Macro LLD : {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
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 :
- Des guillemets sont ajoutés autour de l’expression de macro ;
- 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]+
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]+)
Macro LLD : {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
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]+
Macro utilisateur avec contexte : {$MACRO:regex:"\.+\\"[a-z]+"}
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])+
Macro LLD : {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
Macro utilisateur avec contexte : {$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"([a-z]+)\", \1)}"}
Expression : concat("abc, "{$MACRO:\"{{#MACRO}.iregsub(\\\"\.+\\\\\\\"([a-z]+)\\\", \\1)}\"}")
Remarque sur les trois couches d’échappement :
- Pour la fonction de macro LLD, sans échappement des barres obliques inverses ;
- Pour la macro utilisateur avec contexte, sans échappement des barres obliques inverses ;
- 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]+
Macro utilisateur avec contexte : {$MACRO:regex:"\.+\\"[a-z]+"}
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 :
- Échappement pour le contexte de macro utilisateur sans échappement des barres obliques inverses ;
- Échappement dû au fait qu’il s’agit d’une chaîne avec échappement des barres obliques inverses.