17 Exemples d'escapament
Vista general
Aquesta pàgina ofereix exemples d'ús de l'escapada correcta quan s'empren expressions regulars en diversos contextos.
Quan s'empra el constructor d'expressions de triggers, s'afegeix automàticament l'escapada correcta a les expressions regulars.
Exemples
Macro d'usuari amb context
Expressió regular: \.+\"[a-z]+
Macro d'usuari amb context: {$MACRO:regex:"\.+\\"[a-z]+"}
Avís:
- Les barres invertides no s'escapen;
- Les cometes s'escapen.
Funció macro dins del paràmetre clau de l'element
Expressió regular: .+:(\d+)$
Clau d'element: net.tcp.service[tcp,,"{{$ENDPOINT}.regsub(\".+:(\d+)$\",\1)}"]
Avís:
- L'expressió regular dins de la funció macro
regsubestà entre cometes dobles (perquè conté parèntesis de tancament); - Les cometes al voltant de l'expressió regular s'escapen (perquè tot el tercer paràmetre d'element està entre cometes);
- El paràmetre clau del tercer element està entre cometes dobles perquè conté una coma.
Funció macro LLD
Expressió regular: \.+\"[a-z]+
Macro LLD: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Avís:
- les barres invertides no s'escapen;
- Les cometes s'escapen.
Funció de macro LLD dins del context de macro d'usuari
Expressió regular: \.+\"[a-z]+
Macro LLD: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Macro d'usuari amb context: {$MACRO:"{{#MACRO}.iregsub(\".+\\\"[a-z]+\", \1)}"}
Avís:
- L'escapada de barra invertida per a LLD no canvia;
- en inserir la macro LLD al context de la macro de l'usuari, hem de posar-la a la cadena:
- S'afegeixen cometes al voltant de l'expressió macro;
- Les cometes s'escapen; en total, s'introdueixen 3 barres invertides noves.
Paràmetre de cadena de la funció (qualsevol)
concat s'empra com a exemple.
Contingut de la cadena: \.+\"[a-z]+
Expressió: concat("abc", "\\.\\\"[a-z]+")
Avís:
- Els paràmetres de cadena requereixen escapar tant de les barres inclinades inverses com de les cometes.
Funció macro LLD dins del paràmetre de cadena de la funció
Expressió regular: \.+\"[a-z]+
Macro LLD: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Expressió: concat("abc, "{{#MACRO}.iregsub(\"\\.+\\\\\"[a-z]+\", \\1)}")
Avís:
- Els paràmetres de cadena requereixen escapar tant de les barres inclinades inverses com de les cometes;
- S'afegeix una altra capa d'escapament, perquè la macro només es resoldrà després que la cadena no estigui entre cometes;
Macro d'usuari amb context dins del paràmetre de cadena de la funció
Expressió regular: \.+\"[a-z]+
Macro d'usuari amb context: {$MACRO:regex:"\.+\\"[a-z]+"}
Expressió: concat("abc, "{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}")
Avís:
- Igual que en l'exemple anterior, es necessita una capa addicional d'escapament;
- Les barres invertides i les cometes només s'escapen per a l'escapament de nivell superior (a causa que és un paràmetre de cadena).
Funció de macro LLD dins del context de macro de l'usuari dins de la funció
Expressió regular: \.+\"[a-z]+
Macro LLD: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Macro d'usuari amb context: {$MACRO:"{{#MACRO}.iregsub(\".+\\\"[a-z]+\", \1)}"}
Expressió: concat("abc, "{$MACRO:\"{{#MACRO}.iregsub(\\\".+\\\\\\\"[a-z]+\\\", \\1) }\"}")
Observeu les tres capes d'escapament:
- Per a la funció macro LLD, sense escapar de barres invertides;
- Per a macro d'usuari amb context, sense escapar de barres invertides;
- Per al paràmetre de cadena d'una funció, amb escapament de barres invertides.
Macro d'usuari amb context dins de la cadena
Expressió regular: \.+\"[a-z]+
Macro d'usuari amb context: {$MACRO:regex:"\.+\\"[a-z]+"}
Cadena interior d'alguna expressió, per exemple: func(arg1, arg2, arg3)="{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}"
Avís:
- Les cadenes també requereixen escapar de barra invertida;
- Les cadenes també requereixen escapar de cometes;
- De nou un cas amb 2 nivells d'escapament:
- Escapada per al context de macro d'usuari sense escapar de barra invertida;
- Escapada perquè és una cadena amb una barra invertida escapada.