[comment]: # ({35ff4943-5dd1c4b4})
# 15 Przykłady ucieczki znaków

[comment]: # ({/35ff4943-5dd1c4b4})

[comment]: # ({a44d3dec-b5a80d5b})
#### Przegląd

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

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

[comment]: # ({/a44d3dec-b5a80d5b})

[comment]: # ({c785c1f7-51a937e8})
#### Przykłady

**Makro użytkownika z kontekstem**

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

Uwaga:

-   ukośniki odwrotne [nie są poprzedzane znakiem ucieczki](/manual/config/macros/user_macros_context#important-notes);
-   cudzysłowy są poprzedzane znakiem ucieczki.
			
**Funkcja makra wewnątrz parametru klucza pozycji**

Wyrażenie regularne: `.+:(\d+)$`<br>
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]+)`<br>
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]+)`<br>
Makro LLD: `{{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}`<br>
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]+`<br>
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]+)`<br>
Makro LLD: `{{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}`<br>
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]+`<br>
Makro użytkownika z kontekstem: `{$MACRO:regex:"\.+\\"[a-z]+"}`<br>
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])+`<br>
Makro LLD: `{{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}`<br>
Makro użytkownika z kontekstem: `{$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"([a-z]+)\", \1)}"}`<br>
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]+`<br>
Makro użytkownika z kontekstem: `{$MACRO:regex:"\.+\\"[a-z]+"}`<br>
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.

[comment]: # ({/c785c1f7-51a937e8})
