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.