Esta es una traducción de la página de documentación original en español. Ayúdanos a mejorarla.

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:

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:
  1. Se agregan comillas alrededor de la expresión macro;
  2. Se escapan las comillas; en total, se introducen 3 nuevas barras invertidas.

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

concat se utiliza como ejemplo.

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.

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)}")

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;

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]+\"}")

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).

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 macro LLD, sin escapar de barras invertidas;
  2. Para 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 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:
    1. Escapar para el contexto macro del usuario sin escapar de barra invertida;
    2. Escapar porque es una cadena con barra invertida de escape.