[comment]: # translation:outdated

[comment]: # ({ef775bfd-5dd1c4b4})
# 17 Примери избегавања

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

[comment]: # ({a44d3dec-b5a80d5b})
#### Преглед

Ова страница пружа примере коришћења исправног escaping-а када користите регуларне изразе у различитим контекстима.

:::notetip
Када користите конструктор израза окидача, аутоматски се додаје исправан escaping у регуларним изразима.
:::

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

[comment]: # ({c785c1f7-51a937e8})
#### Примери

**Кориснички макро са контекстом**

Регуларни израз: `\.+\"[a-z]+`<br>
Кориснички макро са контекстом: `{$MACRO:regex:"\.+\\"[a-z]+"}`

Напомена:

- обрнуте косе црте [нису избегнуте](/manual/config/macros/user_macros_context#important-notes);
- наводници су избегнути.

**Макро функција унутар параметра кључа ставке**

Регуларни израз: `.+:(\d+)$`<br>
Кључ ставке: `net.tcp.service[tcp,,"{{$ENDPOINT}.regsub(\".+:(\d+)$\",\1)}"]`

Напомена:

- регуларни израз унутар макро функције `regsub` је под двоструким наводницима (јер садржи затварајућу заграду);
- наводници око регуларног израза су избегнути (јер је цео трећи параметар ставке под двоструким наводницима);
- кључни параметар треће ставке је под двоструким наводницима јер садржи зарез.

**LLD макро функција**

Регуларни израз: `\.+\"([a-z]+)`<br>
LLD макро: `{{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}`

Напомена:

- обрнуте косе црте нису избегнуте;
- наводници су избегнути.

**LLD макро функција унутар контекста корисничког макроа**

Регуларни израз: `\.+\"([a-z]+)`<br>
LLD макро: `{{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}`<br>
Кориснички макро са контекстом: `{$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"[a-z]+\", \1)}"}`

Напомена:

- обрнута коса црта за LLD се не мења;
- након уметања LLD макроа у контекст корисничког макроа, потребно је да га ставимо у стринг:
   1. Наводници се додају око макро израза;
   2. Наводници се замењују; укупно се уводе 3 нове обрнуте косе црте.

**Стринг параметар функције (било који)**

`concat` се користи као пример.

Садржај стринга: `\.+\"[a-z]+`<br>
Израз: `concat("abc", "\\.\\\"[a-z]+")`

Напомена:

- Параметри стринга захтевају избегавање и за обрнуте косе црте и за наводнике.

**LLD макро функција унутар параметра стринга функције**

Регуларни израз: `\.+\"([a-z]+)`<br>
LLD макро: `{{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}`<br>
Израз: `concat("abc, "{{#MACRO}.iregsub(\"\\.+\\\\\"([a-z]+)\", \\1)}")`

Напомена:

- Параметри стринга захтевају избегавање и за обрнуте косе црте и за наводнике;
- Додат је још један слој избегавања, јер ће макро бити разрешен тек након што се стринг уклони из наводника;

**Кориснички макро са контекстом унутар параметра стринга функције**

Регуларни израз: `\.+\"[a-z]+`<br>
Кориснички макро са контекстом: `{$MACRO:regex:"\.+\\"[a-z]+"}`<br>
Израз: `concat("abc, "{$MACRO:regex:\"\.+\\\\\"[a-z]+\"}")`

Напомена:

- Исто као у претходном примеру, потребан је додатни слој есцаппинга;
- Обрнуте косе црте и наводници се есцапирају само за есцаппинг највишег нивоа (пошто је параметар стринга).

**LLD макро функција унутар контекста корисничког макроа унутар функције**

Регуларни израз: `\.+\"([a-z])+`<br>
LLD макро: `{{#MACRO}.iregsub("\.+\\"([a-z]+)", \1)}`<br>
Кориснички макро са контекстом: `{$MACRO:"{{#MACRO}.iregsub(\"\.+\\\"([a-z]+)\", \1)}"}`<br>
Израз: `concat("abc, "{$MACRO:\"{{#MACRO}.iregsub(\\"\.+\\\\\\\"([a-z]+)\\\", \\1)}\"}")`

Обратите пажњу на три слоја избегавања:

   1. За LLD макро функцију, без избегавања обрнутих косих цртица;
   2. За кориснички макро са контекстом, без избегавања обрнутих косих цртица;
   3. За стринг параметар функције, са избегавањем обрнутих косих цртица.

**Кориснички макро са контекстом унутар стринга**

Регуларни израз: `\.+\"[a-z]+`<br>
Кориснички макро са контекстом: `{$MACRO:regex:"\.+\\"[a-z]+"}`<br>
Унутар стринга неког израза, на пример: `func(arg1, arg2, arg3)="{$MACRO:regex:\"\.+\\\\\"[a-z]+\"}"`

Напомена:

- Стрингови такође захтевају избегавање обрнуте косе црте;
- Стрингови такође захтевају избегавање наводника;
- Поново случај са 2 нивоа избегавања:
   1. Избегавање за контекст корисничког макроа без избегавања обрнуте косе црте;
   2. Избегавање за стринг са избегавањем обрнуте косе црте.

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