17 Ejemplos de escape
Descripción general
Esta página proporciona ejemplos del uso de escape correcto cuando se utilizan expresiones regulares en varios contextos.
Cuando se utiliza el constructor de expresiones de iniciadores, el escape correcto en las expresiones regulares se agrega automáticamente.
Ejemplos
Macro de usuario con contexto
Expresión regular: \.+\"[a-z]+
Macro de usuario con contexto: {$MACRO:regex:"\.+\\"[a-z]+"}
Aviso:
- las barras invertidas no tienen escape;
- se escapan las comillas.
Función macro LLD
Expresión regular: \.+\"[a-z]+
Macro LLD: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Aviso:
- las barras invertidas no se escapan;
- se escapan las comillas.
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)}"}
Aviso:
- la barra invertida que se escapa para LLD no cambia;
- al insertar la macro LLD en el contexto de la macro del usuario, debemos ponerla en una cadena:
- Se agregan comillas alrededor de la expresión macro;
- Se escapan las comillas; en total, se introducen 3 nuevas barras invertidas.
Parámetro de cadena de función sin historial
Contenido de la cadena: \.+\"[a-z]+
Expresión: concat("abc", "\\.\\\"[a-z]+")
Aviso:
- Los parámetros de cadena requieren escape tanto para barras invertidas como para comillas.
Parámetro de cadena de la función de historial
Contenido de la cadena: \.+\"[a-z]+
Expresión: find(__ITEM_KEY__,,"regexp","\.+\\"[a-z]+")
Aviso:
- las barras invertidas no se escapan;
- se escapan las comillas.
Función de macro LLD dentro del parámetro de cadena de una función sin historial
Expresión regular: \.+\"[a-z]+
Macro LLD: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Expresión: concat("abc, "{{#MACRO}.iregsub(\"\\.+\\\\\"[a-z]+\", \\1)}")
Aviso:
- 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á sólo después de que la cadena no esté entre comillas;
Función de macro LLD dentro del parámetro de cadena de la función de historial
Expresión regular: \.+\"[a-z]+
Macro LLD: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Expresión: find(__ITEM_KEY__,,"eq","{{#MACRO}.iregsub(\"\.+\\\"[a-z]+\", \1)}")
Aviso:
- las barras invertidas no se escapan;
- se escapan las comillas.
Macro de usuario con contexto dentro del parámetro de cadena de una función sin historial
Expresión regular: \.+\"[a-z]+
Macro de usuario con contexto: {$MACRO:regex:"\.+\\"[a-z]+"}
Expresión: concat("abc, "{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}")
Aviso:
- 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 (en virtud de que es un parámetro de cadena).
Macro de usuario con contexto dentro del parámetro de cadena de la función de historial
Expresión regular: \.+\"[a-z]+
Macro de usuario con contexto: {$MACRO:regex:"\.+\\"[a-z]+"}
Expresión: find(__ITEM_KEY__,,"eq","{$MACRO:regex:\"\.+\\\"[a-z]+\"}")
Aviso:
- las barras invertidas no se escapan;
- se escapan las comillas.
Función de macro LLD dentro del contexto de macro de usuario dentro de una función sin historial
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 macro LLD, sin escapar de barras invertidas;
- Para 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.
Función de macro LLD dentro del contexto de macro de usuario dentro de la función de historial
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: find(__ITEM_KEY__,,"eq","{$MACRO:\"{{#MACRO}.iregsub(\\".+\\\\"[a-z]+\\", \1)}\ "}")
Aviso:
- las barras invertidas no se escapan;
- se escapan las comillas.
Macro de usuario con contexto justo dentro de la cadena
Expresión regular: \.+\"[a-z]+
Macro de usuario con contexto: {$MACRO:regex:"\.+\\"[a-z]+"}
Cadena interior de alguna expresión, por ejemplo: func(arg1, arg2, arg3)="{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}"
Aviso:
- Las cadenas también requieren escape de barra invertida;
- Las cadenas también requieren el escape de comillas;
- De nuevo un caso con 2 niveles de escape:
- Escapar del contexto macro del usuario sin escapar de barra invertida;
- Escapar porque es una cadena con barra invertida de escape.