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 macrodo usuário, precisamos colocá-la na string:- Aspas são adicionadas na expressão macro;
- 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:
- Para a função macro LLD, sem escape de barras invertidas;
- Para macro usuário com contexto, sem escape de barras invertidas;
- 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:
- Escape para contexto macro do usuário com contexto sem barra invertida escape;
- Escape por ser uma string com barra invertida escape.