This is a translation of the original English documentation page. Help us make it better.

18 Voorbeelden van escapes

Overzicht

Deze pagina biedt voorbeelden van het gebruik van correct escaping bij het gebruik van reguliere expressies in verschillende contexten.

Bij het gebruik van de triggerexpressieconstructor wordt correct escaping in reguliere expressies automatisch toegevoegd.

Voorbeelden

Gebruikersmacro met context

Reguliere expressie: \.+\"[a-z]+ Gebruikersmacro met context: {$MACRO:regex:"\.+\\"[a-z]+"}

Let op:

LLD-macrofunctie

Reguliere expressie: \.+\"[a-z]+
LLD-macro: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}

Let op:

  • backslashes worden niet geëscaped;
  • aanhalingstekens worden geëscaped.

LLD-macrofunctie binnen gebruikersmacrocontext

Reguliere expressie: \.+\"[a-z]+
LLD-macro: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Gebruikersmacro met context: {$MACRO:"{{#MACRO}.iregsub(\".+\\\"[a-z]+\", \1)}"}

Let op:

  • backslash-escaping voor LLD verandert niet;
  • bij het invoegen van de LLD-macro in de gebruikersmacrocontext, moeten we deze in een string plaatsen:
  1. Aanhalingstekens worden toegevoegd rond de macro-expressie;
  2. Aanhalingstekens worden geëscaped; in totaal worden 3 nieuwe backslashes geïntroduceerd.

Stringparameter van functie (any)

concat wordt gebruikt als voorbeeld.

Stringinhoud: \.+\"[a-z]+
Expressie: concat("abc", "\\.\\\"[a-z]+")

Let op:

  • Stringparameters vereisen escapen voor zowel backslashes als aanhalingstekens.

LLD-macrofunctie binnen stringparameter van functie

Reguliere expressie: \.+\"[a-z]+
LLD-macro: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Expressie: concat("abc, "{{#MACRO}.iregsub(\"\\.+\\\\\"[a-z]+\", \\1)}")

Let op:

  • Stringparameters vereisen escapen voor zowel backslashes als aanhalingstekens;
  • Er wordt een extra laag van escaping toegevoegd, omdat de macro pas wordt opgelost nadat de string is verwijderd van de aanhalingstekens;

Gebruikersmacro met context binnen de stringparameter van de functie

Reguliere expressie: \.+\"[a-z]+
Gebruikersmacro met context: {$MACRO:regex:"\.+\\"[a-z]+"}
Expressie: concat("abc, "{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}")

Let op:

  • Net als in het vorige voorbeeld is er een extra laag van escaping nodig;
  • Backslashes en aanhalingstekens worden alleen geëscaped voor de escaping op het hoogste niveau (omdat het een stringparameter is).

LLD-macrofunctie binnen gebruikersmacrocontext binnen functie

Reguliere expressie: \.+\"[a-z]+
LLD-macro: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Gebruikersmacro met context: {$MACRO:"{{#MACRO}.iregsub(\".+\\\"[a-z]+\", \1)}"}
Expressie: concat("abc, "{$MACRO:\"{{#MACRO}.iregsub(\\\".+\\\\\\\"[a-z]+\\\", \\1)}\"}")

Let op de drie lagen van escaping:

  1. Voor LLD-macrofunctie, zonder escaping van backslashes;
  2. Voor gebruikersmacro met context, zonder escaping van backslashes;
  3. Voor de stringparameter van een functie, met escaping van backslashes.

Gebruikersmacro met context net binnen string

Reguliere expressie: \.+\"[a-z]+
Gebruikersmacro met context: {$MACRO:regex:"\.+\\"[a-z]+"}
Binnen string van een expressie, bijvoorbeeld: func(arg1, arg2, arg3)="{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}"

Let op:

  • Strings vereisen ook backslash-escaping;
  • Strings vereisen ook aanhalingsteken-escaping;
  • Opnieuw een geval met 2 niveaus van escaping:
  1. Escaping voor gebruikersmacrocontext zonder backslash-escaping;
  2. Escaping voor een string met backslash-escaping.