[comment]: # ({ef775bfd-da69ac43})

# 17 Exemples d'escapament

[comment]: # ({/ef775bfd-da69ac43})

[comment]: # ({a44d3dec-1e84b4a7})

#### Vista general

Aquesta pàgina ofereix exemples d'ús de l'escapada correcta quan s'empren expressions regulars en diversos contextos.

:::notetip
Quan s'empra el constructor d'expressions de triggers, s'afegeix automàticament l'escapada correcta a les expressions regulars.
:::

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

[comment]: # ({5cc50e18-137e19de})

#### Exemples

**Macro d'usuari amb context**

Expressió regular: `\.+\"[a-z]+`<br>
Macro d'usuari amb context: `{$MACRO:regex:"\.+\\"[a-z]+"}`

Avís:

- Les barres invertides [no escapen](/manual/config/macros/user_macros_context#important-notes);
- Les cometes escapen.

**Funció macro dins del paràmetre clau de l'element**

Expressió regular: `.+:(\d+)$`<br>
Clau d'element: `net.tcp.service[tcp,,"{{ITEM.VALUE}.regsub(\".+:(\d+)$\",\1)}"]`

Avís:
- L'expressió regular dins de la funció macro `regsub` està 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 tercer paràmetre clau d'element està entre cometes dobles perquè conté una coma.


**Funció macro LLD**

Expressió regular: `\.+\"[a-z]+`<br>
Macro LLD: `{{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}`

Avís:

- les barres invertides no escapen;
- Les cometes escapen.

**Funció de macro LLD dins del context de macro d'usuari**

Expressió regular: `\.+\"[a-z]+`<br>
Macro LLD: `{{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}`<br>
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 escapen; en total, s'introdueixen 3 barres invertides noves.

**Paràmetre de cadena de funció no històrica**

Contingut de la cadena: `\.+\"[a-z]+`<br>
Expressió: `concat("abc", "\\.\\\"[a-z]+")`

Avís:

- Els paràmetres de cadena requereixen escapar tant de les barres inclinades inverses com de les cometes.

**Paràmetre de cadena de la funció d'historial**

Contingut de la cadena: `\.+\"[a-z]+`<br>
Expressió: `find(__ITEM_KEY__,,"regexp","\.+\\"[a-z]+")`

Avís:

- les barres invertides no escapen;
- Les cometes escapen.

**Funció macro LLD dins del paràmetre de cadena de la funció no històrica**

Expressió regular: `\.+\"[a-z]+`<br>
Macro LLD: `{{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}`<br>
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 s'hagi desactivat la cadena;

**Funció macro LLD dins del paràmetre de cadena de la funció d'historial**

Expressió regular: `\.+\"[a-z]+`<br>
Macro LLD: `{{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}`<br>
Expressió: `find(__ITEM_KEY__,,"eq","{{#MACRO}.iregsub(\"\.+\\\"[a-z]+\", \1)}")`

Avís:

- les barres invertides no escapen;
- Les cometes escapen.

**Macro d'usuari amb context dins del paràmetre de cadena de la funció no històrica**

Expressió regular: `\.+\"[a-z]+`<br>
Macro d'usuari amb context: `{$MACRO:regex:"\.+\\"[a-z]+"}`<br>
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).

**Macro d'usuari amb context dins del paràmetre de cadena de la funció d'historial**

Expressió regular: `\.+\"[a-z]+`<br>
Macro d'usuari amb context: `{$MACRO:regex:"\.+\\"[a-z]+"}`<br>
Expressió: `find(__ITEM_KEY__,,"eq","{$MACRO:regex:\"\.+\\\"[a-z]+\"}")`

Avís:

- les barres invertides no escapen;
- Les cometes escapen.

**Funció de macro LLD dins del context de macro de l'usuari dins de la funció no històrica**

Expressió regular: `\.+\"[a-z]+`<br>
Macro LLD: `{{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}`<br>
Macro d'usuari amb context: `{$MACRO:"{{#MACRO}.iregsub(\".+\\\"[a-z]+\", \1)}"}`<br>
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.

**Funció de macro LLD dins del context de macro de l'usuari dins de la funció d'historial**

Expressió regular: `\.+\"[a-z]+`<br>
Macro LLD: `{{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}`<br>
Macro d'usuari amb context: `{$MACRO:"{{#MACRO}.iregsub(\".+\\\"[a-z]+\", \1)}"}`<br>
Expressió: `find(__ITEM_KEY__,,"eq","{$MACRO:\"{{#MACRO}.iregsub(\\".+\\\\"[a-z]+\\", \1)}\ "}")`

Avís:

- les barres invertides no escapen;
- Les cometes escapen.

**Macro d'usuari amb context dins de la cadena**

Expressió regular: `\.+\"[a-z]+`<br>
Macro d'usuari amb context: `{$MACRO:regex:"\.+\\"[a-z]+"}`<br>
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.

[comment]: # ({/5cc50e18-137e19de})
