Se encuentra viendo la documentación de la versión en desarrollo, puede estar incompleta.
Esta página fue traducida automáticamente. Si detectas un error, selecciónalo y presiona Ctrl+Enter para informarlo a los editores.

17 Ejemplos de escape

Descripción general

Esta página proporciona ejemplos de cómo utilizar el escape correcto al usar expresiones regulares en varios contextos.

Al utilizar el constructor de expresiones de disparadores, el escape correcto en las expresiones regulares se añade automáticamente.

Ejemplos

Macro de usuario con contexto

Expresión regular: \.+\"[a-z]+
Macro de usuario con contexto: {$MACRO:regex:"\.+\\"[a-z]+"}

Nota:

Función de macro dentro del parámetro de clave de métrica

Expresión regular: .+:(\d+)$
Clave de métrica: net.tcp.service[tcp,,"{{$ENDPOINT}.regsub(\".+:(\d+)$\",\1)}"]

Nota:

  • la expresión regular dentro de la función de macro regsub está entre comillas dobles (porque contiene paréntesis de cierre);
  • las comillas alrededor de la expresión regular se escapan (porque todo el tercer parámetro de la métrica está entre comillas dobles);
  • el tercer parámetro de la clave de métrica está entre comillas dobles porque contiene una coma.

Función de macro LLD

Expresión regular: \.+\"([a-z]+)
Macro LLD: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}

Nota:

  • las barras invertidas no se escapan;
  • las comillas se escapan.

Función de macro LLD dentro del contexto de macro de usuario

Expresión regular: \.+\"([a-z]+)
Macro LLD: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
Macro de usuario con contexto: {$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"[a-z]+\", \1)}"}

Nota:

  • el escape de barra invertida para LLD no cambia;
  • al insertar la macro LLD en el contexto de macro de usuario, necesitamos ponerla en una cadena:
  1. Se agregan comillas alrededor de la expresión de macro;
  2. Las comillas se escapan; en total, se introducen 3 nuevas barras invertidas.

Parámetro de cadena de la función (cualquiera)

concat se usa como ejemplo.

Contenido de la cadena: \.+\"[a-z]+
Expresión: concat("abc", "\\.\\\"[a-z]+")

Nota:

  • Los parámetros de cadena requieren escape tanto para barras invertidas como para comillas.

Función de macro LLD dentro del parámetro de cadena de la función

Expresión regular: \.+\"([a-z]+)
Macro LLD: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
Expresión: concat("abc, "{{#MACRO}.iregsub(\"\\.+\\\\\"([a-z]+)\", \\1)}")

Nota:

  • Los parámetros de cadena requieren escape tanto para barras invertidas como para comillas;
  • Se agrega otra capa de escape, porque la macro se resolverá solo después de que la cadena se desentrecomille;

Macro de usuario con contexto dentro del parámetro de cadena de la función

Expresión regular: \.+\"[a-z]+
Macro de usuario con contexto: {$MACRO:regex:"\.+\\"[a-z]+"}
Expresión: concat("abc, "{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}")

Nota:

  • Igual que en el ejemplo anterior, se necesita una capa adicional de escape;
  • Las barras invertidas y las comillas se escapan solo para el escape de nivel superior (por ser un parámetro de cadena).

Función de macro LLD dentro del contexto de macro de usuario dentro de la función

Expresión regular: \.+\"([a-z])+
Macro LLD: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
Macro de usuario con contexto: {$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"([a-z]+)\", \1)}"}
Expresión: concat("abc, "{$MACRO:\"{{#MACRO}.iregsub(\\\"\.+\\\\\\\"([a-z]+)\\\", \\1)}\"}")

Observe las tres capas de escape:

  1. Para la función de macro LLD, sin escape de barras invertidas;
  2. Para la macro de usuario con contexto, sin escape de barras invertidas;
  3. Para el parámetro de cadena de una función, con escape de barras invertidas.

Macro de usuario con contexto solo dentro de una cadena

Expresión regular: \.+\"[a-z]+
Macro de usuario con contexto: {$MACRO:regex:"\.+\\"[a-z]+"}
Dentro de la cadena de alguna expresión, por ejemplo: func(arg1, arg2, arg3)="{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}"

Nota:

  • Las cadenas también requieren escape de barras invertidas;
  • Las cadenas también requieren escape de comillas;
  • De nuevo un caso con 2 niveles de escape:
    1. Escape para el contexto de macro de usuario sin escape de barras invertidas;
    2. Escape por ser una cadena con escape de barras invertidas.