Как я могу получить последнее совпадение в регулярном выражении extracor в jmeter?

Я хотел бы извлечь последнее вхождение регулярного выражения в Jmeter. Для этого я использовал выражение Regular Extractor, но не могу получить последнее вхождение.

Я пробовал это:

  • Регулярное выражение: "var1": ([^ "] +)," var2 "
  • Шаблон: 1 доллар США
  • Номер совпадения: -1
  • Значение по умолчанию: expression_matchNr

Затем в своем скрипте я использовал переменную $ {expression}

Я тестировал expression_matchNr, но он дает мне количество совпадений.

Что я должен указать в поле "Номер совпадения:"?

заранее спасибо


person Sarroura    schedule 30.10.2014    source источник
comment
могли бы мы получить пример плз, чтобы лучше понять, что вы хотите?   -  person dramixx    schedule 30.10.2014
comment
Вы можете прочитать whathaveyoutried.com и проявить некоторое уважение к сообществу StackOverflow, которое настоятельно рекомендует публиковать высококачественные вопросы вместе с MCVE (минимально-завершенный-проверяемый-пример код), показывающий, что вы пробовали до сих пор. Возможно, вы захотите обновить свое сообщение, чтобы оно соответствовало минимальному разумному уровню качества и продемонстрировало свое желание уважать других участников StackOverflow. Это профессионалы, которые любят отвечать на хорошие вопросы по вопросам, связанным с MCVE. Наслаждайтесь тем, что вы являетесь участником StackOverflow, и поддерживайте сетевой этикет сообщества   -  person user3666197    schedule 30.10.2014
comment
Потому что такие тирады делают это место более дружелюбным ...   -  person CharlieS    schedule 31.10.2014


Ответы (2)


Если у вас есть следующий результат:

expression=foo
expression_1=foo    
expression_2=bar
expression_3=**what you looking for**
expression_matchNr=3

Вы можете использовать функцию JMeter __V, чтобы получить значение переменной expression_3.

Согласно описанию функции:

Например, если у вас есть переменные A1, A2 и N = 1:

  • ${A1} - работает нормально
  • ${A${N}} - не работает (ссылка на вложенную переменную)
  • ${__V(A${N})} - работает нормально. $ {N} становится A1, а функция __V возвращает значение A1.

Итак, в вашем случае функция, возвращающая последнее совпадение, независимо от того, сколько совпадений, будет выглядеть так:

${__V(expression_${expression_matchNr})}

См. Серию сообщений Как использовать функции JMeter о том, что еще можно сделано с функциями.

person Dmitri T    schedule 30.10.2014
comment
Спасибо, я использовал переменную $ {__ V (expression _ $ {expression_matchNr})} - person Sarroura; 30.10.2014

К сожалению, ядро ​​JMeter не поддерживает -1, -2 ... для окончательной / предпоследней нотации и т. Д. Однако вы можете найти окончательное вхождение, используя отрицательный прогноз

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

[\s\S]*("var1":([^\"]+),"var2")(?!$1$)

и Шаблон: 2 доллара США

объяснение: сопоставить что-либо до (..1 ..) - происходит там, где невозможно сопоставить (..1 ..) после. Возврат (..2 ..)

Также первое вхождение элемента:

 ("var1":([^\"]+),"var2")(?!$1$)[\s\S]*

Что касается эффективности, это сохраняет весь запрос [\ s \ S] * в переменной, поэтому он немного тяжелый, и я не проверял, потребляет ли он слишком много памяти. Если это так, рассмотрите возможность использования javaScript или JQuery, который поддерживает last методы объекта

person Mikkel Hofstedt Juul    schedule 07.02.2018