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:
- ukośniki odwrotne nie są poprzedzane znakiem ucieczki;
- cudzysłowy są poprzedzane znakiem ucieczki.
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
regsubjest 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:
- wokół wyrażenia makra dodawane są cudzysłowy;
- 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:
- Dla funkcji makra LLD, bez poprzedzania znakiem ucieczki ukośników odwrotnych;
- Dla makra użytkownika z kontekstem, bez poprzedzania znakiem ucieczki ukośników odwrotnych;
- 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:
- Poprzedzanie znakiem ucieczki dla kontekstu makra użytkownika bez poprzedzania znakiem ucieczki ukośników odwrotnych;
- Poprzedzanie znakiem ucieczki wynikające z tego, że jest to ciąg, z poprzedzaniem znakiem ucieczki ukośników odwrotnych.