This is the documentation page for an unsupported version of Zabbix.
Is this not what you were looking for? Switch to the current version or choose one from the drop-down menu.

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 escapen;
  • Les cometes escapen.

Funció macro LLD

Expressió regular: \.+\"[a-z]+
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]+
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 funció no històrica

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.

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

Contingut de la cadena: \.+\"[a-z]+
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]+
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 s'hagi desactivat la cadena;

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

Expressió regular: \.+\"[a-z]+
Macro LLD: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
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]+
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).

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

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

  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]+
Macro LLD: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Macro d'usuari amb context: {$MACRO:"{{#MACRO}.iregsub(\".+\\\"[a-z]+\", \1)}"}
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]+
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. Escape per al context de macro d'usuari sense escapar de barra invertida;
  2. Escapada perquè és una cadena amb una barra invertida escapada.