Служебные команды
Время, управляющие символы, кодирование значений цикла, границы разбора, очистка журнала и наследование основного результата.
Служебные команды решают задачи, которые не являются обычным преобразованием строки: вставляют время, обозначают границу разбора, меняют подготовку циклического запроса или очищают готовый журнал. У них разные формы записи, поэтому нельзя по привычке окружать каждую команду второй такой же меткой.
Формы записи
| Форма | Команды | Как читается |
|---|---|---|
| Одиночная метка | |MAINLOG|, |TIMESTAMP|, |TIMESTAMPMS| | Вся метка заменяется готовым значением |
| Аргумент до следующей черты | |ANSI|13|, |TIME|-|, |DATE|/| | Текст после имени является числом или разделителем; повтор имени не нужен |
| Парный блок | |CLEAR|...|CLEAR| | Обрабатывается только содержимое между двумя одинаковыми метками |
| Маркер поля или настройки | |USEURLENC|, |FIRSTCHAR|, |LASTCHAR|, |LDEL|, |RDEL| | Маркер изменяет обработку окружающего поля и сам не является возвращаемым текстом |
|ANSI|13| содержит один числовой аргумент и закрывающую вертикальную черту.
|ANSI|13|ANSI| ошибочно превращает команду с аргументом в парную функцию и оставляет лишний текст.
Что выбрать
Дата и время
|TIME| и |DATE| дают привычную запись для человека; |TIMESTAMP| и |TIMESTAMPMS| дают число Unix для запросов и подписей.
Циклический запрос
|USEURLENC| кодирует каждое значение циклического разборщика перед подстановкой в адрес, заголовки или тело запроса.
Границы разбора
|FIRSTCHAR| и |LASTCHAR| обозначают края ответа, а |LDEL| и |RDEL| добавляют текст вокруг выбранной группы регулярного выражения.
Журнал и файлы
|CLEAR| удаляет пустые строки, а |MAINLOG| вставляет основной журнал в дополнительный файл.
Основной журнал в дополнительном файле
|MAINLOG| доступен в теле дополнительного файла и вставляет уже подготовленный основной журнал текущего результата. Команда не читает журнал другого потока или прошлого запуска.
Пусть основной журнал равен:
Тело дополнительного файла:
Получившийся файл:
Команда может быть единственным содержимым файла или частью шаблона. В обычном адресе запроса, заголовке или теле запроса она не означает «последний ответ»; для сетевого ответа используется |RESPONSE|.
Дополнительный файл содержит заголовок, затем |MAINLOG|, поэтому к основному результату добавляется понятное имя раздела.
Подстановка |MAINLOG| в адрес запроса смешивает назначение файла результата и сетевого поля; интерпретатор такого договора не задаёт.
Кодирование значения цикла
|USEURLENC| ставится в адресе, заголовках или теле циклического запроса. Если маркер присутствует в поле, каждое значение |REGEXCYCLE|[n], |PARSCYCLE|[n] или пользовательского цикла кодируется для безопасной подстановки в адрес, а сам маркер удаляется перед отправкой.
Пусть первая строка циклического результата равна red shoes/42:
Первый запрос получит адрес:
Маркер относится ко всему полю: если в одном поле подставляются несколько циклических значений, они кодируются по одному и тому же правилу.
|USEURLENC| не предназначен для одиночного |PARS|[n], |REGEX|[n] или обычной переменной. Для одного значения используйте функцию |URLENCODE|...|URLENCODE|; иначе служебный маркер может остаться в тексте поля.
Символ по числовому коду
|ANSI|ЧИСЛО| заменяется одним символом с указанным числовым кодом. Надёжно переносимы коды ASCII от 0 до 127; значения от 128 до 255 зависят от кодовой страницы Windows, поэтому для обычного текста лучше использовать сам знак в Юникоде.
Два последовательных знака создают перевод строки Windows:
Результат:
Часто используемые значения:
| Код | Символ |
|---|---|
9 | знак табуляции |
10 | перевод строки |
13 | возврат каретки |
32 | пробел |
Аргумент должен быть целым числом. Если преобразование невозможно, текущая реализация не подставляет символ и оставляет неразобранную команду, поэтому результат с текстом |ANSI|...| нужно считать ошибкой шаблона.
Дата и время
|TIME|
Форма записи — |TIME|РАЗДЕЛИТЕЛЬ|. Команда берёт текущее местное время в формате Windows и заменяет двоеточия указанным разделителем.
Если исходное время равно 09:07:05, выражение:
вернёт 09-07-05. Пустой разделитель записывается как |TIME|| и для того же времени вернёт 090705.
|DATE|
Форма записи — |DATE|РАЗДЕЛИТЕЛЬ|. Команда берёт текущую местную дату в формате Windows и заменяет точки указанным разделителем.
Если исходная дата равна 02.08.2026, выражение:
вернёт 02/08/2026.
Формат и порядок частей задаются региональными настройками Windows. Если система выводит дату через / или время без секунд, команда не добавляет отсутствующие части и не превращает запись в единый международный формат.
Используйте |TIMESTAMP| или |TIMESTAMPMS|: связанные части одного вычисления получат согласованное число.
Используйте |TIME| и |DATE|, если формат Windows и местный часовой пояс являются частью ожидаемого результата.
Края ответа
|FIRSTCHAR| и |LASTCHAR| являются особыми границами в настройке обычного разборщика. Они не возвращают первый или последний знак как самостоятельные переменные.
Пусть ответ равен:
| Начальная граница | Конечная граница | Результат |
|---|---|---|
|FIRSTCHAR| | <body> | prefix |
<body> | </body> | Hello |
</body> | |LASTCHAR| | suffix |
|FIRSTCHAR| | |LASTCHAR| | весь ответ |
В правиле замены эти маркеры имеют ещё одно точное значение: |FIRSTCHAR| как заменяемое значение удаляет первый знак строки, а |LASTCHAR| удаляет последний.
Начало |FIRSTCHAR| и конец <body> явно означают участок от самого начала ответа до первой найденной границы.
Запись (|FIRSTCHAR|текст|FIRSTCHAR|) ошибочно обращается с маркером границы как с парной строковой функцией.
Текст вокруг группы
|LDEL| и |RDEL| используются в списке групп разборщика по регулярному выражению. Они добавляют постоянный текст слева и справа от непустой группы.
Точная форма одной строки списка:
Пусть выражение order:(\d+) нашло order:42, а группа 1 равна 42. Строка:
добавит в результат:
|LDEL| владеет только текстом слева, |RDEL| — только текстом справа, а между ними обязательно находится целый номер группы. Если группа пуста, эта строка списка не добавляет ни группу, ни окружающий текст. Несколько строк групп соединяются в заданном порядке.
Строка 1 возвращает только содержимое первой группы.
Строка |LDEL|[|1|RDEL|]| возвращает первую группу в квадратных скобках.
Очистка строк журнала
|CLEAR|...|CLEAR| обрабатывает многострочный участок основного журнала или дополнительного файла после подстановки переменных. Из участка удаляются:
- пустые строки и строки, содержащие только пробелы;
- вся строка, в которой осталось значение
|NOT USED|от неиспользованного результата.
Шаблон:
Если логин равен [email protected], а первый результат разборщика не использовался и превратился в |NOT USED|, итог будет таким:
Команда удаляет всю строку с |NOT USED|, включая постоянную подпись Код:. Она не убирает пустые строки во всём документе вне своих двух границ и не предназначена для изменения тела сетевого запроса.
Пустая пара |CLEAR||CLEAR| просто исчезает. Если закрывающей метки нет, граница участка не определена, поэтому всегда ставьте вторую |CLEAR| после последней очищаемой строки.
Номер результата
Квадратные скобки принадлежат переменным с номером или именем, а не всем служебным командам:
|PARS|[1]— первый результат обычного разборщика;|REGEX|[2]— второй результат разборщика по регулярному выражению;|DV|[Token]— динамическая переменная с именемToken;|ANSI|13|— числовой аргумент команды, поэтому квадратные скобки здесь не используются.
Номера результатов начинаются с единицы. Полные правила доступности и области значений приведены в основах языка.