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:
  1. Dodawane są cudzysłowy wokół wyrażenia makra;
  2. 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:

  1. Dla funkcji makro LLD, ukośniki odwrotne nie są poprzedzone znakiem ucieczki;
  2. Dla makra użytkownika z kontekstem, ukośniki odwrotne nie są poprzedzone znakiem ucieczki;
  3. 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:
  1. Ucieczka dla kontekstu makra, gdzie ukośniki odwrotne nie są poprzedzone znakiem ucieczki;
  2. Ucieczka dla ciągu znaków, gdzie ukośniki odwrotne nie są poprzedzone znakiem ucieczki.