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 regsub steht 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:
    1. Anführungszeichen werden um den Makroausdruck hinzugefügt;
    2. 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:

  1. Für die LLD-Makrofunktion, ohne Maskierung von Backslashes;
  2. Für das Benutzermakro mit Kontext, ohne Maskierung von Backslashes;
  3. 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:
    1. Maskierung für den Benutzermakro-Kontext ohne Backslash-Maskierung;
    2. Maskierung dafür, dass es sich um eine Zeichenkette mit Backslash-Maskierung handelt.