This is a translation of the original English documentation page. Help us make it better.

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 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:
    1. S'afegeixen cometes al voltant de l'expressió macro;
    2. 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:

  1. Per a la funció macro LLD, sense escapar de barres invertides;
  2. Per a macro d'usuari amb context, sense escapar de barres invertides;
  3. 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:
    1. Escapada per al context de macro d'usuari sense escapar de barra invertida;
    2. Escapada perquè és una cadena amb una barra invertida escapada.