16 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:
- las barras invertidas no se escapan;
- las comillas se escapan.
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
regsubestá 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:
- Se agregan comillas alrededor de la expresión de macro;
- 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:
- Para la función de macro LLD, sin escape de barras invertidas;
- Para la macro de usuario con contexto, sin escape de barras invertidas;
- 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:
- Escape para el contexto de macro de usuario sin escape de barras invertidas;
- Escape por ser una cadena con escape de barras invertidas.