Você está visualizando a documentação da versão de desenvolvimento, que pode estar incompleta.
Esta página foi traduzida automaticamente. Se você notar um erro, selecione-o e pressione Ctrl+Enter para reportá-lo aos editores.

17 Exemplos de escape

Visão geral

Esta página fornece exemplos de uso de escape correto ao usar expressões regulares em vários contextos.

Ao usar o construtor de expressões de trigger, o escape correto em expressões regulares é adicionado automaticamente.

Exemplos

Macro de usuário com contexto

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

Observação:

Função de macro dentro do parâmetro da chave do item

Expressão regular: .+:(\d+)$
Chave do item: net.tcp.service[tcp,,"{{$ENDPOINT}.regsub(\".+:(\d+)$\",\1)}"]

Observação:

  • a expressão regular dentro da função de macro regsub está entre aspas duplas (porque contém parêntese de fechamento);
  • as aspas ao redor da expressão regular são escapadas (porque todo o terceiro parâmetro do item está entre aspas duplas);
  • o terceiro parâmetro da chave do item está entre aspas duplas porque contém uma vírgula.

Função de macro LLD

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

Observação:

  • as barras invertidas não são escapadas;
  • as aspas são escapadas.

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

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

Observação:

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

Parâmetro de string de função (qualquer)

concat é usado como exemplo.

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

Observação:

  • Parâmetros de string exigem escape tanto para barras invertidas quanto para aspas.

Função de macro LLD dentro do parâmetro de string da função

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

Observação:

  • Parâmetros de string exigem escape tanto para barras invertidas quanto para aspas;
  • Outra camada de escape é adicionada, porque a macro será resolvida apenas após a string ser desmarcada;

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

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

Observação:

  • Assim como no exemplo anterior, uma camada adicional de escape é necessária;
  • Barras invertidas e aspas são escapadas apenas para o escape de nível superior (por ser um parâmetro de string).

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

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

Observe as três camadas de escape:

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

Macro de usuário com contexto apenas dentro da string

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

Observação:

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