16 Przykłady znaków ucieczki

Przegląd

Ta strona zawiera przykłady poprawnego stosowania znaków ucieczki podczas używania wyrażeń regularnych w różnych kontekstach.

Podczas korzystania z konstruktora wyrażeń wyzwalacza poprawne znaki ucieczki w wyrażeniach regularnych są dodawane automatycznie.

Przykłady

Makro użytkownika z kontekstem

Wyrażenie regularne: \.+\"[a-z]+
Makro użytkownika z kontekstem: {$MACRO:regex:"\.+\\"[a-z]+"}

Uwaga:

Funkcja makra wewnątrz parametru klucza pozycji

Wyrażenie regularne: .+:(\d+)$
Klucz pozycji: net.tcp.service[tcp,,"{{$ENDPOINT}.regsub(\".+:(\d+)$\",\1)}"]

Uwaga:

  • wyrażenie regularne wewnątrz funkcji makra regsub jest ujęte w podwójny cudzysłów (ponieważ zawiera zamykający nawias);
  • cudzysłowy wokół wyrażenia regularnego są poprzedzane znakiem ucieczki (ponieważ cały trzeci parametr pozycji jest ujęty w podwójny cudzysłów);
  • trzeci parametr klucza pozycji jest ujęty w podwójny cudzysłów, ponieważ zawiera przecinek.

Funkcja makra LLD

Wyrażenie regularne: \.+\"([a-z]+)
Makro LLD: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}

Uwaga:

  • ukośniki odwrotne nie są poprzedzane znakiem ucieczki;
  • cudzysłowy są poprzedzane znakiem ucieczki.

Funkcja makra LLD wewnątrz kontekstu makra użytkownika

Wyrażenie regularne: \.+\"([a-z]+)
Makro LLD: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
Makro użytkownika z kontekstem: {$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"[a-z]+\", \1)}"}

Uwaga:

  • sposób poprzedzania znakiem ucieczki ukośników odwrotnych dla LLD nie zmienia się;
  • przy wstawianiu makra LLD do kontekstu makra użytkownika należy umieścić je w ciągu znaków:
    1. wokół wyrażenia makra dodawane są cudzysłowy;
    2. cudzysłowy są poprzedzane znakiem ucieczki; łącznie wprowadzane są 3 nowe ukośniki odwrotne.

Parametr tekstowy funkcji (dowolnej)

Jako przykład użyto concat.

Zawartość ciągu: \.+\"[a-z]+
Wyrażenie: concat("abc", "\\.\\\"[a-z]+")

Uwaga:

  • parametry tekstowe wymagają poprzedzania znakiem ucieczki zarówno ukośników odwrotnych, jak i cudzysłowów.

Funkcja makra LLD wewnątrz parametru tekstowego funkcji

Wyrażenie regularne: \.+\"([a-z]+)
Makro LLD: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
Wyrażenie: concat("abc, "{{#MACRO}.iregsub(\"\\.+\\\\\"([a-z]+)\", \\1)}")

Uwaga:

  • parametry tekstowe wymagają poprzedzania znakiem ucieczki zarówno ukośników odwrotnych, jak i cudzysłowów;
  • dodawana jest kolejna warstwa poprzedzania znakiem ucieczki, ponieważ makro zostanie rozwiązane dopiero po usunięciu cudzysłowów z ciągu;

Makro użytkownika z kontekstem wewnątrz parametru tekstowego funkcji

Wyrażenie regularne: \.+\"[a-z]+
Makro użytkownika z kontekstem: {$MACRO:regex:"\.+\\"[a-z]+"}
Wyrażenie: concat("abc, "{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}")

Uwaga:

  • podobnie jak w poprzednim przykładzie potrzebna jest dodatkowa warstwa poprzedzania znakiem ucieczki;
  • ukośniki odwrotne i cudzysłowy są poprzedzane znakiem ucieczki tylko dla najwyższego poziomu poprzedzania znakiem ucieczki (ponieważ jest to parametr tekstowy).

Funkcja makra LLD wewnątrz kontekstu makra użytkownika wewnątrz funkcji

Wyrażenie regularne: \.+\"([a-z])+
Makro LLD: {{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}
Makro użytkownika z kontekstem: {$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"([a-z]+)\", \1)}"}
Wyrażenie: concat("abc, "{$MACRO:\"{{#MACRO}.iregsub(\\\"\.+\\\\\\\"([a-z]+)\\\", \\1)}\"}")

Zwróć uwagę na trzy warstwy poprzedzania znakiem ucieczki:

  1. Dla funkcji makra LLD, bez poprzedzania znakiem ucieczki ukośników odwrotnych;
  2. Dla makra użytkownika z kontekstem, bez poprzedzania znakiem ucieczki ukośników odwrotnych;
  3. Dla parametru tekstowego funkcji, z poprzedzaniem znakiem ucieczki ukośników odwrotnych.

Makro użytkownika z kontekstem bezpośrednio wewnątrz ciągu

Wyrażenie regularne: \.+\"[a-z]+
Makro użytkownika z kontekstem: {$MACRO:regex:"\.+\\"[a-z]+"}
Wewnątrz ciągu w pewnym wyrażeniu, na przykład: func(arg1, arg2, arg3)="{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}"

Uwaga:

  • ciągi również wymagają poprzedzania znakiem ucieczki ukośników odwrotnych;
  • ciągi również wymagają poprzedzania znakiem ucieczki cudzysłowów;
  • ponownie jest to przypadek z 2 poziomami poprzedzania znakiem ucieczki:
    1. Poprzedzanie znakiem ucieczki dla kontekstu makra użytkownika bez poprzedzania znakiem ucieczki ukośników odwrotnych;
    2. Poprzedzanie znakiem ucieczki wynikające z tego, że jest to ciąg, z poprzedzaniem znakiem ucieczki ukośników odwrotnych.