This is a translation of the original English documentation page. Help us make it better.

17 Примери избегавања

Преглед

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

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

Примери

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

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

Напомена:

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

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

Напомена:

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

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

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

Напомена:

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

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

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

Напомена:

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

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

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

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

Напомена:

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

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

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

Напомена:

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

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

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

Напомена:

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

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

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

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

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

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

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

Напомена:

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