Примеры экранирования
В этом разделе представлены примеры правильного экранирования при использовании регулярных выражений в различных контекстах.
При использовании конструктора триггерных выражений правильное экранирование в регулярных выражениях добавляется автоматически.
Пользовательский макрос с контекстом:
Регулярное выражение: \.+\"[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 в контекст пользовательского макроса нужно поместить это в строку;
- выражение макроса заключается в кавычки;
- кавычки экранируются; всего добавляется 3 новых обратных слеша.
Строковый параметр функции, не относящейся к истории
Содержимое строки: \.+\"[a-z]+
Выражение: concat("abc", "\\.\\\"[a-z]+")
Замечание:
- строковый параметр требует экранирования как для обратных слешей, так и для кавычек.
Строковый параметр функции истории
Содержимое строки: \.+\"[a-z]+
Выражение: find(__ITEM_KEY__,,"regexp","\.+\\"[a-z]+")
Замечания:
- обратные слеши не экранируются;
- кавычки экранируются.
Функция макросов LLD внутри строкового параметра функции, не относящейся к истории
Регулярное выражение: \.+\"[a-z]+
Макрос LLD: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Выражение: concat("abc, "{{#MACRO}.iregsub(\"\\.+\\\\\"[a-z]+\", \\1)}")
Замечания:
- строковые параметры требуют экранирования как для обратных слешей, так и для кавычек;
- добавляется еще один уровень экранирования, так как макрос будет раскрыт только после раскрытия кавычек в строке.
Функция макросов LLD внутри строкового параметра функции истории
Регулярное выражение: \.+\"[a-z]+
Макрос LLD: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Выражение: find(__ITEM_KEY__,,"eq","{{#MACRO}.iregsub(\"\.+\\\"[a-z]+\", \1)}")
Замечания:
- обратные слеши не экранируются;
- кавычки экранируются.
Пользовательский макрос с контекстом внутри строкового параметра функции, не относящейся к истории
Регулярное выражение: \.+\"[a-z]+
Пользовательский макрос с контекстом: {$MACRO:regex:"\.+\\"[a-z]+"}
Выражение: concat("abc, "{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}")
Замечания:
- как и в предыдущем примере, необходим дополнительный уровень экранирования;
- обратные слеши и кавычки экранируются только для экранирования верхнего уровня (поскольку это строковый параметр).
Пользовательский макрос с контекстом внутри строкового параметра функции истории
Регулярное выражение: \.+\"[a-z]+
Пользовательский макрос с контекстом: {$MACRO:regex:"\.+\\"[a-z]+"}
Выражение: find(__ITEM_KEY__,,"eq","{$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; без экранирования обратных слешей;
- для пользовательского макроса с контекстом; без экранирования обратных слешей;
- для строкового параметра функции; с экранированием обратных слешей.
Функция макросов LLD внутри контекста пользовательского макроса внутри функции истории
Регулярное выражение: \.+\"[a-z]+
Макрос LLD: {{#MACRO}.iregsub("\.+\\"[a-z]+", \1)}
Пользовательский макрос с контекстом: {$MACRO:"{{#MACRO}.iregsub(\".+\\\"[a-z]+\", \1)}"}
Выражение: find(__ITEM_KEY__,,"eq","{$MACRO:\"{{#MACRO}.iregsub(\\".+\\\\"[a-z]+\\", \1)}\"}")
Замечания:
- обратные слеши не экранируются;
- кавычки экранируются.
Пользовательский макрос с контекстом просто внутри строки
Регулярное выражение: \.+\"[a-z]+
Пользовательский макрос с контекстом: {$MACRO:regex:"\.+\\"[a-z]+"}
Внутри строки некоторого выражения, например: func(arg1, arg2, arg3)="{$MACRO:regex:\"\\.+\\\\\"[a-z]+\"}"
Замечания:
- строки также требуют экранирования обратных слешей;
- строки также требуют экранирования кавычек;
- снова случай с двумя уровнями экранирования:
- экранирование для контекста пользовательского макроса; без экранирования обратных слешей;
- экранирование, поскольку это строка; с экранированием обратных слешей.