17 Escaping примери

Преглед

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

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

Примери

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

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

Напомена:

** 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. Изолација због тога што је стринг са изолацијом обрнутих косих црта.