Esta é uma tradução da página de documentação original em inglês. Ajude-nos a torná-la melhor.

18 Exemplos de Escaping

Visão geral

Esta página fornece exemplos de como usar escaping ao utilizar expressões regulares em contextos diferentes.

Quando usar o construtor da expressão trigger, a escaping correta nas expressões regulares é adicionada automaticamente.

Exemplo

Macro do usuário com contexto

Expressão regular: \.+\"[a-z]+
Macro do usuário com contexto: {$MACRO:regex:"\.+\\"[a-z]+"}

Observe que:

  • barras invertidas não estão escapadas not escaped;
  • aspas estão escapadas.

Função da macro LLD

Expressão macro: \.+\"[a-z]+
Macro LLD: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}

Observe que:

  • barras investidas não estão escapadas;
  • aspas estão escapadas.

Função da macro LLD dentro do contexto da macro do usuário

Expressão regular: \.+\"[a-z]+
Macro LLD: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Macro do usuário com contexto: {$MACRO:"{{#MACRO}.iregsub(\".+\\\"[a-z]+\", \1)}"}

Observe que:

  • a barra invertida escape para LLD não muda;
  • ao inserir a macro LLD no contexto da macro do usuário, precisamos colocá-la na string:
  1. Aspas são adicionadas na expressão macro;
  2. Aspas são escapadas; 3 novas barras invertidas são adicionadas no total.

Parâmetro de string de função não histórico

Conteúdo da string: \.+\"[a-z]+
Expressão: concat("abc", "\\.\\\"[a-z]+")

Observe que:

  • Parâmetros de String exigem escape para barras investidas e aspas.

Parâmetro de String de função de histórico

Conteúdo da String: \.+\"[a-z]+
Expressão: find(__ITEM_KEY__,,"regexp","\.+\\"[a-z]+")

Observe que:

  • barras investidas não estão escapadas;
  • aspas estão escapadas.

Função do Macro LLD dentro do parâmetro de string de função não histórico

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

Observe que:

  • Os parâmetros da String exigem escape para barras investidas e aspas;
  • Outra camada de escape é adicionada, porque a macro será resolvida apenas após a string ser desmarcada;
Função macro LLD dentro do parâmetro de string de função de histórico

\.+\"[a-z]+
Macro LLD : {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Expressão: find(__ITEM_KEY__,,"eq","{{#MACRO}.iregsub(\"\.+\\\"[a-z]+\", \1)}")

Observe que:

  • barras investidas não estão escapadas;
  • aspas estão escapadas.

Macro do usuário com contexto dentro do parâmetro de string de função não histórico

Expressão regular: \.+\"[a-z]+
Macro do usuário com contexto: {$MACRO:regex:"\.+\\"[a-z]+"}
Expressão: concat("abc, "{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}")

Observe que:

  • Assim como no exemplo anterior, uma camada extra de escape foi adicionada
  • Barras invertidas e aspas são escape somente no top-level escape (em virtude de ser um parâmetro de string).

Macro do usuário com contexto dentro do parâmetro de string de função de histórico

Expressão regular: \.+\"[a-z]+
Macro usuário com contexto: {$MACRO:regex:"\.+\\"[a-z]+"}
Expressão: find(__ITEM_KEY__,,"eq","{$MACRO:regex:\"\.+\\\"[a-z]+\"}")

Observe que:

  • barras invertidas não estão escapadas;
  • aspas estão escapadas:

Função macro LLD dentro do macro do usuário com contexto dentro de função não histórico

Expressão regular: \.+\"[a-z]+
Macro LLD: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Macro usuário com contexto: {$MACRO:"{{#MACRO}.iregsub(\".+\\\"[a-z]+\", \1)}"}
Expressão: concat("abc, "{$MACRO:\"{{#MACRO}.iregsub(\\\".+\\\\\\\"[a-z]+\\\", \\1)}\"}")

Observe que há três camadas de escape:

  1. Para a função macro LLD, sem escape de barras invertidas;
  2. Para macro usuário com contexto, sem escape de barras invertidas;
  3. Para o parâmetro da string de uma função, com escape de barras invertidas.

Função macro LLD dentro da macro do usuário com contexto dentro de função de histórico

Expressão regular: \.+\"[a-z]+
Macro LLD: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Macro usuário com contexto: {$MACRO:"{{#MACRO}.iregsub(\".+\\\"[a-z]+\", \1)}"}
Expressão: find(__ITEM_KEY__,,"eq","{$MACRO:\"{{#MACRO}.iregsub(\\".+\\\\"[a-z]+\\", \1)}\"}")

Observe que:

  • barras invertidas não estão escapadas;
  • aspas estão escapadas.

Macro do usuário com contexto apenas dentro da string

Expressão regular: \.+\"[a-z]+
Usuário macro com contexto: {$MACRO:regex:"\.+\\"[a-z]+"}
Dentro da string de uma expressão, por exemplo: func(arg1, arg2, arg3)="{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}"

Observe que:

  • As Strings também exigem barras invertidas escapadas;
  • As Strings também exigem aspas escapadas;
  • Novamente um caso com 2 níveis de escape:
    1. Escape para contexto macro do usuário com contexto sem barra invertida escape;
    2. Escape por ser uma string com barra invertida escape.