18 Przykłady użycia znaków ucieczki
Przegląd
Ta strona zawiera przykłady poprawnego użycia znaków ucieczki przy korzystaniu z wyrażeń regularnych w różnych kontekstach.
Podczas korzystania z konstruktora wyrażeń wyzwalacza, poprawne unikanie znaków w wyrażeniach regularnych jest 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ą poprzedzone znakiem ucieczki;
- cudzysłowy są poprzedzone znakiem ucieczki.
Funkcja makro LLD
Wyrażenie regularne: \.+\"[a-z]+
Makro LLD: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Uwaga:
- ukośniki odwrotne nie są poprzedzone znakiem ucieczki;
- cudzysłowy są poprzedzone znakiem ucieczki.
Funkcja makro 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:
- Ucieczka ukośnika odwrotnego dla LLD się nie zmienia;
- po wstawieniu makra LLD do kontekstu makra użytkownika, musimy umieścić je w ciągu znaków:
- Dodawane są cudzysłowy wokół wyrażenia makra;
- Cudzysłowy są poprzedzone znakiem ucieczki; w sumie wprowadzone są 3 nowe ukośniki odwrotne.
Parametr ciągu znaków funkcji niehistorycznej
Zawartość ciągu: \.+\"[a-z]+
Wyrażenie: concat("abc", "\\.\\\"[a-z]+")
Uwaga:
- Parametry ciągów znaków wymagają ucieczki zarówno dla ukośników odwrotnych, jak i cudzysłowów.
Parametr ciągu znaków funkcji historycznej
Zawartość ciągu: \.+\"[a-z]+
Wyrażenie: find(__ITEM_KEY__,,"regexp","\.+\\"[a-z]+")
Uwaga:
- ukośniki odwrotne nie są poprzedzone znakiem ucieczki;
- cudzysłowy są poprzedzone znakiem ucieczki
Funkcja makro LLD wewnątrz parametru ciągu znaków funkcji niehistorycznej
Wyrażenie regularne: \.+\"[a-z]+
Makro LLD: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Wyrażenie: concat("abc, "{{#MACRO}.iregsub(\"\\.+\\\\\"[a-z]+\", \\1)}")
Uwaga:
- Parametry ciągów znaków wymagają ucieczki zarówno dla ukośników odwrotnych, jak i cudzysłowów;
- Dodana jest kolejna warstwa ucieczki, ponieważ makro zostanie rozwiązane dopiero po zdjęciu cudzysłowia z ciągu znaków.;
Funkcja makro LLD wewnątrz parametru ciągu znaków funkcji historycznej
Wyrażenie regularne: \.+\"[a-z]+
Makro LLD: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Wyrażenie: find(__ITEM_KEY__,,"eq","{{#MACRO}.iregsub(\"\.+\\\"[a-z]+\", \1)}")
Uwaga:
- ukośniki odwrotne nie są poprzedzone znakiem ucieczki;
- cudzysłowy są poprzedzone znakiem ucieczki.
Makro użytkownika z kontekstem wewnątrz parametru ciągu znaków funkcji niehistorycznej
Wyrażenie regularne: \.+\"[a-z]+
Makro użytkownika z kontekstem: {$MACRO:regex:"\.+\\"[a-z]+"}
Wyrażenie: concat("abc, "{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}")
Uwaga:
- Tak jak w poprzednim przykładzie, potrzebna jest dodatkowa warstwa ucieczki;
- Ukośniki odwrotne i cudzysłowy są poprzedzone znakiem ucieczki tylko do ucieczki na najwyższym poziomie (ze względu na to, że jest to parametr ciągu).
Makro użytkownika z kontekstem wewnątrz parametru ciągu znaków funkcji historycznej
Wyrażenie regularne: \.+\"[a-z]+
Makro użytkownika z kontekstem: {$MACRO:regex:"\.+\\"[a-z]+"}
Wyrażenie: find(__ITEM_KEY__,,"eq","{$MACRO:regex:\"\.+\\\"[a-z]+\"}")
Uwaga:
- ukośniki odwrotne nie są poprzedzone znakiem ucieczki;
- cudzysłowy są poprzedzone znakiem ucieczki.
Funkcja makro LLD wewnątrz kontekstu makra użytkownika wewnątrz funkcji niehistorycznej
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 unikania:
- Dla funkcji makro LLD, ukośniki odwrotne nie są poprzedzone znakiem ucieczki;
- Dla makra użytkownika z kontekstem, ukośniki odwrotne nie są poprzedzone znakiem ucieczki;
- Dla parametru ciągu funkcji, ukośniki odwrotne są poprzedzone znakiem ucieczki.
Funkcja makro LLD wewnątrz kontekstu makra użytkownika wewnątrz funkcji historycznej
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: find(__ITEM_KEY__,,"eq","{$MACRO:\"{{#MACRO}.iregsub(\\".+\\\\"[a-z]+\\", \1)}\"}")
Uwaga:
- ukośniki odwrotne nie są poprzedzone znakiem ucieczki;
- cudzysłowy są poprzedzone znakiem ucieczki.
Makro użytkownika z kontekstem tylko wewnątrz ciągu znaków
Wyrażenie regularne: \.+\"[a-z]+
Makro użytkownika z kontekstem: {$MACRO:regex:"\.+\\"[a-z]+"}
Wewnątrz ciągu w jakimś wyrażeniu, na przykład: func(arg1, arg2, arg3)="{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}"
Uwaga:
- Ciągi znaków również wymagają znaku ucieczki przed ukośnikiem odwrotnym;
- Ciągi znaków również wymagają znaku ucieczki przed cudzysłowiem;
- Ponownie przypadek z 2 poziomami ucieczki:
- Ucieczka dla kontekstu makra, gdzie ukośniki odwrotne nie są poprzedzone znakiem ucieczki;
- Ucieczka dla ciągu znaków, gdzie ukośniki odwrotne nie są poprzedzone znakiem ucieczki.