16 Escaping-Beispiele
Übersicht
Diese Seite enthält Beispiele für die korrekte Escaping-Verwendung bei regulären Ausdrücken in verschiedenen Kontexten.
Bei Verwendung des Konstruktors für Auslöser-Ausdrücke wird das korrekte Escaping in regulären Ausdrücken automatisch hinzugefügt.
Beispiele
Benutzermakro mit Kontext
Regulärer Ausdruck: \.+\"[a-z]+
Benutzermakro mit Kontext: {$MACRO:regex:"\.+\\"[a-z]+"}
Beachten Sie:
- Backslashes werden nicht maskiert;
- Anführungszeichen werden maskiert.
Makrofunktion innerhalb eines Datenpunktschlüssel-Parameters
Regulärer Ausdruck: .+:(\d+)$
Datenpunktschlüssel: net.tcp.service[tcp,,"{{$ENDPOINT}.regsub(\".+:(\d+)$\",\1)}"]
Beachten Sie:
- der reguläre Ausdruck innerhalb der Makrofunktion
regsubsteht in doppelten Anführungszeichen (weil er eine schließende Klammer enthält); - die Anführungszeichen um den regulären Ausdruck werden maskiert (weil der gesamte dritte Datenpunkt-Parameter in doppelten Anführungszeichen steht);
- der dritte Datenpunktschlüssel-Parameter steht in doppelten Anführungszeichen, weil er ein Komma enthält.
LLD-Makrofunktion
Regulärer Ausdruck: \.+\"([a-z]+)
LLD-Makro: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
Beachten Sie:
- Backslashes werden nicht maskiert;
- Anführungszeichen werden maskiert.
LLD-Makrofunktion innerhalb eines Benutzermakro-Kontexts
Regulärer Ausdruck: \.+\"([a-z]+)
LLD-Makro: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
Benutzermakro mit Kontext: {$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"[a-z]+\", \1)}"}
Beachten Sie:
- die Backslash-Maskierung für LLD ändert sich nicht;
- beim Einfügen des LLD-Makros in den Benutzermakro-Kontext müssen wir es in eine Zeichenkette setzen:
- Anführungszeichen werden um den Makroausdruck hinzugefügt;
- Anführungszeichen werden maskiert; insgesamt werden 3 neue Backslashes eingefügt.
Zeichenkettenparameter einer Funktion (beliebig)
concat wird als Beispiel verwendet.
Zeichenketteninhalt: \.+\"[a-z]+
Ausdruck: concat("abc", "\\.\\\"[a-z]+")
Beachten Sie:
- Zeichenkettenparameter erfordern die Maskierung sowohl von Backslashes als auch von Anführungszeichen.
LLD-Makrofunktion innerhalb eines Zeichenkettenparameters einer Funktion
Regulärer Ausdruck: \.+\"([a-z]+)
LLD-Makro: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
Ausdruck: concat("abc, "{{#MACRO}.iregsub(\"\\.+\\\\\"([a-z]+)\", \\1)}")
Beachten Sie:
- Zeichenkettenparameter erfordern die Maskierung sowohl von Backslashes als auch von Anführungszeichen;
- eine weitere Maskierungsebene wird hinzugefügt, weil das Makro erst aufgelöst wird, nachdem die Zeichenkette ohne Anführungszeichen vorliegt;
Benutzermakro mit Kontext innerhalb eines Zeichenkettenparameters einer Funktion
Regulärer Ausdruck: \.+\"[a-z]+
Benutzermakro mit Kontext: {$MACRO:regex:"\.+\\"[a-z]+"}
Ausdruck: concat("abc, "{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}")
Beachten Sie:
- wie im vorherigen Beispiel ist eine zusätzliche Maskierungsebene erforderlich;
- Backslashes und Anführungszeichen werden nur für die Maskierung auf oberster Ebene maskiert (da es sich um einen Zeichenkettenparameter handelt).
LLD-Makrofunktion innerhalb eines Benutzermakro-Kontexts innerhalb einer Funktion
Regulärer Ausdruck: \.+\"([a-z])+
LLD-Makro: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
Benutzermakro mit Kontext: {$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"([a-z]+)\", \1)}"}
Ausdruck: concat("abc, "{$MACRO:\"{{#MACRO}.iregsub(\\\"\.+\\\\\\\"([a-z]+)\\\", \\1)}\"}")
Beachten Sie die drei Maskierungsebenen:
- Für die LLD-Makrofunktion, ohne Maskierung von Backslashes;
- Für das Benutzermakro mit Kontext, ohne Maskierung von Backslashes;
- Für den Zeichenkettenparameter einer Funktion, mit Maskierung von Backslashes.
Benutzermakro mit Kontext direkt innerhalb einer Zeichenkette
Regulärer Ausdruck: \.+\"[a-z]+
Benutzermakro mit Kontext: {$MACRO:regex:"\.+\\"[a-z]+"}
Innerhalb der Zeichenkette eines beliebigen Ausdrucks, zum Beispiel: func(arg1, arg2, arg3)="{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}"
Beachten Sie:
- Zeichenketten erfordern ebenfalls die Maskierung von Backslashes;
- Zeichenketten erfordern ebenfalls die Maskierung von Anführungszeichen;
- erneut ein Fall mit 2 Maskierungsebenen:
- Maskierung für den Benutzermakro-Kontext ohne Backslash-Maskierung;
- Maskierung dafür, dass es sich um eine Zeichenkette mit Backslash-Maskierung handelt.