#regex #jmeter
#регулярное выражение #jmeter
Вопрос:
В jmeter мне нужно извлечь цифры, которые идут после 36-го символа.
Пример
Response: {"data":{"paymentId":"DOM1234567890111243"}}
Мне нужно извлечь: 11243 (иногда это будет только 1, или 2, или 3, или 4 цифры)
Правая граница: DOM12345678901 также продолжает меняться.Но правильная длина границы всегда будет равна 36 символам.
Любая помощь будет высоко оценена.
Ответ №1:
Данные вашего ответа, похоже, являются JSON, поэтому я бы не стал полагаться на эти «36 символов», поскольку их формат может отличаться.
Я бы предложил сначала извлечь это paymentId
значение, а затем применить регулярное выражение к этому DOMxxx
биту.
- Добавьте постпроцессор JSR223 в качестве дочернего элемента запроса, который возвращает вышеуказанные данные
-
Поместите следующий код в область «Script»:
def dom = new groovy.json.JsonSlurper().parse(prev.getResponseData()).data.paymentId log.info("DOM: " dom) def myValue = ((dom =~ ".{14}(\d )")[0][1]) as String log.info("myValue: " myValue) vars.put("myValue", myValue)
-
Вот и все, вы должны иметь возможность доступа к извлеченным данным по мере
${myValue}
необходимости.
Дополнительная информация:
Комментарии:
1. Спасибо за информацию для извлечения только значения DOM. Это сработало
Ответ №2:
Если в строке, которую вы проверяете, больше ничего нет, вы могли бы использовать что-то вроде:
.{36}(d )
Первой группой этого регулярного выражения будет искомое число.
Тест и объяснение:https://regex101.com/r/iDOO8T/2