Регулярное выражение для извлечения цифр появляется после 36-го символа в строке

#regex #jmeter

#регулярное выражение #jmeter

Вопрос:

В jmeter мне нужно извлечь цифры, которые идут после 36-го символа.

Пример

 Response:  {"data":{"paymentId":"DOM1234567890111243"}}
  

Мне нужно извлечь: 11243 (иногда это будет только 1, или 2, или 3, или 4 цифры)

Правая граница: DOM12345678901 также продолжает меняться.Но правильная длина границы всегда будет равна 36 символам.

Любая помощь будет высоко оценена.

Ответ №1:

Данные вашего ответа, похоже, являются JSON, поэтому я бы не стал полагаться на эти «36 символов», поскольку их формат может отличаться.

Я бы предложил сначала извлечь это paymentId значение, а затем применить регулярное выражение к этому DOMxxx биту.

  1. Добавьте постпроцессор JSR223 в качестве дочернего элемента запроса, который возвращает вышеуказанные данные
  2. Поместите следующий код в область «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)
      
  3. Вот и все, вы должны иметь возможность доступа к извлеченным данным по мере ${myValue} необходимости.

    введите описание изображения здесь

Дополнительная информация:

Комментарии:

1. Спасибо за информацию для извлечения только значения DOM. Это сработало

Ответ №2:

Если в строке, которую вы проверяете, больше ничего нет, вы могли бы использовать что-то вроде:

 .{36}(d )
  

Первой группой этого регулярного выражения будет искомое число.

Тест и объяснение:https://regex101.com/r/iDOO8T/2