Данные и разбор
Поля JSON, границы, регулярные выражения, замены, соединение результатов и вычисления с точными правилами ошибок.
Этот раздел нужен, когда значение уже получено и из него требуется выбрать часть, заменить фрагменты, соединить строки или вычислить число. Все примеры используют .
Что выбрать
Готовый JSON
Добавьте к переменной цепочку ["поле"] в правильной форме JSON, например |RESPONSE|["items"][0]. Отдельная функция не нужна.
Известные границы
SIMPLEPARS выбирает текст между точными начальной и конечной строками; GETVALUEBYKEY читает простые строки вида ключ: значение.
Шаблон совпадения
REGEXPARS извлекает совпадения, REPLACESTR заменяет точный текст, а REGREPLACE заменяет совпадения регулярного выражения.
Несколько результатов
REGEXGLUE соединяет строки нескольких разборщиков, SIMPLEGLUE дописывает окончание, а MATH вычисляет числовое выражение.
Поля JSON в переменных
Если значение переменной является корректным JSON, после собственной части переменной можно сразу указать поля объекта и элементы массива. Отдельной функции JSONPATH нет.
Первая пара скобок у PARS, VALUE и DV всё ещё принадлежит самой переменной: она выбирает номер разборщика, номер входного значения или имя динамической переменной. Каждая следующая пара является шагом внутри JSON.
["name"] требует объект и выбирает поле name с точным учётом регистра. ["Name"] означает другое поле.
[0] требует массив и выбирает первый элемент. Нумерация массива начинается с нуля.
Строка ['name'] не подходит: имя поля должно быть строкой JSON в двойных кавычках. Число в кавычках и число без кавычек имеют разный смысл:
Пусть |RESPONSE| равно:
Тогда выражение:
вернёт second без кавычек.
Строка
Возвращается содержимое без окружающих кавычек.
Число, true, false или null
Возвращается точная запись JSON, например 12.5, true или null.
Объект или массив
Возвращается компактный JSON без добавочных пробелов и переводов строк.
Без добавочных скобок переменная возвращается как раньше и не обязана содержать JSON. Как только добавлен хотя бы один шаг, неверный JSON, отсутствующее поле, неверный вид текущего значения, отрицательный или выходящий за массив номер завершают обработку явной ошибкой.
Каждый шаг проверяется по текущему значению
После ["items"] текущим значением может стать массив, поэтому следующим шагом допустим [0], но не ["name"]. После [0] текущим значением может стать объект, и только тогда допустим ["name"].
Значение из строк «ключ: значение»
GETVALUEBYKEY ищет первую строку с указанным ключом. Вход разделяется одной меткой |KEYNAME|: до неё находятся строки, после неё — искомый ключ.
Результат — Active.
Сравнение ключа не учитывает регистр, а пробелы вокруг ключа слева от двоеточия удаляются. В самом аргументе после |KEYNAME| начальные и конечные пробелы не удаляются, поэтому передавайте Status, а не Status.
status: Active совпадает с ключом Status и возвращает Active.
Для ключа State функция возвращает точный текст Key not found: State.
Двоеточие внутри значения теряется
Строка URL: https://example.test возвращает https//example.test: функция разделяет строку по каждому двоеточию, обрезает пробелы и соединяет части без разделителя. Для адресов, времени и других значений с двоеточиями используйте SIMPLEPARS, REGEXPARS или JSON.
Пустое значение считается отсутствующим ключом и также даёт Key not found: .... Если во входе вообще нет |KEYNAME|, выполнение завершается ошибкой формата.
Разбор текста
|SIMPLEPARS|
SIMPLEPARS выбирает текст после границы FROM и до ближайшей следующей границы TO.
Результат — 984531.
Поле INDEX необязательно. Оно выбирает, какое вхождение FROM использовать; без поля или при пустом значении выбирается первое.
Результат — second: функция находит второе <a>, затем первый </a> после него.
Значение |FIRSTCHAR| в FROM начинает результат с первого знака входа.
Значение |LASTCHAR| в TO продолжает результат до последнего знака входа.
FROM = |FIRSTCHAR| вместе с TO = |LASTCHAR| возвращает вход целиком.
Границы чувствительны к регистру. При обычных FROM и TO отсутствующая граница даёт пустой результат, а неположительное или нечисловое значение INDEX не является допустимой записью.
Перед LASTCHAR проверьте начальную границу
Если TO равно |LASTCHAR|, текущая реализация не подтверждает, что обычная граница FROM действительно найдена. При её отсутствии может вернуться хвост строки, выбранный по длине самой границы. Не используйте такой результат как признак совпадения: сначала проверяйте наличие FROM отдельным условием.
Замена текста
|REPLACESTR|
REPLACESTR заменяет все точные вхождения FROM на TO внутри IN.
Результат:
По умолчанию регистр учитывается. Одиночная метка |IGNORECASE| включает замену без учёта регистра:
Результат — ошибка ошибка ошибка. У IGNORECASE нет значения и второй такой же метки.
Используйте REPLACESTR: знаки ., (, [ и * будут обычным текстом и не потребуют особых правил.
Используйте REGREPLACE, когда заменяемая часть описывается классом знаков, повторением или группой захвата.
Соединение результатов разборщиков
Обе функции работают с готовыми многострочными результатами |REGEX|[n]. Они не выполняют новое регулярное выражение.
Есть две равнозначные формы записи
Внутри парной функции квадратные скобки не нужны: (|REGEXGLUE|1, = ,2|REGEXGLUE|). В обычном поле доступна краткая переменная |REGEXGLUE|[1, = ,2]. Её место среди переменных показано в .
|REGEXGLUE|
Аргументы чередуются: номер первого разборщика, разделитель, номер следующего разборщика, следующий разделитель и так далее.
Пусть результаты равны:
Результат:
Строки соединяются по положению: первая с первой, вторая со второй. Если следующий список короче первого, к оставшимся строкам первого списка всё равно добавляется разделитель; лишние строки более длинного следующего списка отбрасываются. Поэтому перед соединением убедитесь, что списки имеют одинаковое количество строк.
Запятая разделяет аргументы и не может быть частью разделителя. Количество пар «разделитель, номер» не ограничено синтаксисом.
Вставка значения в код JavaScript
JSESCAPE предназначен для случая, когда значение in-Line подставляется прямо внутрь исходного текста JavaScript до его выполнения.
Для входа из двух строк:
выражение:
возвращает:
Функция заменяет перевод строки Windows CRLF на текст \r\n, двойную кавычку на \", а одинарную — на \'.
Это не полное экранирование произвольной строки
Обратная косая черта остаётся без изменения, а одиночные LF и CR не преобразуются. Поэтому JSESCAPE не даёт общего договора безопасной вставки любых внешних данных. Если код может прочитать готовое значение через , передавайте его этим способом и не собирайте строковую запись кода вручную.
Математическое выражение
MATH удаляет обычные пробелы, вычисляет выражение и возвращает число с точкой как дробным разделителем.
Результат — 50.
Вычисление выполняет библиотека TMS Analytics, поэтому полный перечень операторов и функций задаёт её .
Необязательный последний аргумент removechars сначала удаляет все знаки, кроме цифр, +, -, *, /, круглых скобок, ^, √, точки и запятой:
После очистки вычисляется 12.5*2, поэтому результат равен 25.
removechars может скрыть ошибку входа
Используйте этот аргумент только тогда, когда договор источника разрешает отбросить подпись вроде Цена:. Он также удалит имена математических функций и любые неожиданные буквы, поэтому выражение с sin, переменной или опечаткой может превратиться в другое вычисление.
Неверное выражение возвращает текст ошибки вычислителя вместо числа. Следующая операция не должна принимать такой текст за успешный числовой результат.