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 макроа у контекст корисничког макроа, потребно је да га ставимо у стринг:
- Наводници се додају око макро израза;
- Наводници се замењују; укупно се уводе 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)}\"}")
Обратите пажњу на три слоја избегавања:
- За LLD макро функцију, без избегавања обрнутих косих цртица;
- За кориснички макро са контекстом, без избегавања обрнутих косих цртица;
- За стринг параметар функције, са избегавањем обрнутих косих цртица.
Кориснички макро са контекстом унутар стринга
Регуларни израз: \.+\"[a-z]+
Кориснички макро са контекстом: {$MACRO:regex:"\.+\\"[a-z]+"}
Унутар стринга неког израза, на пример: func(arg1, arg2, arg3)="{$MACRO:regex:\"\.+\\\\\"[a-z]+\"}"
Напомена:
- Стрингови такође захтевају избегавање обрнуте косе црте;
- Стрингови такође захтевају избегавање наводника;
- Поново случај са 2 нивоа избегавања:
- Избегавање за контекст корисничког макроа без избегавања обрнуте косе црте;
- Избегавање за стринг са избегавањем обрнуте косе црте.