Как получить конкретное слово из ответа в экстракторе регулярных выражений jmeter

Я пытаюсь извлечь последнее значение из строки в экстракторе регулярных выражений Jmeter.

Моя строка

Server.init("asdfasd4ffffasdf", "http://x.x.x.x:8888/", "asdf-U-Yasdf77asdf99");

Я хочу получить только asdf-U-Yasdf77asdf99.

Я пробовал что-то вроде следующего, но не правильно:

Server.init\(".+", ".+", "([A-Za-z0-9\-]+)"\);

person Peer Mohamed    schedule 27.11.2013    source источник
comment
Что вы имеете в виду, говоря, что ваше регулярное выражение неверно? Как вы его используете и какие результаты получаете?   -  person Pshemo    schedule 27.11.2013


Ответы (3)


Используя JMeter, вам нужно указать свою группу соответствия.

Reference Name: MYWORD
Regular Expression: Server\.init\("[^"]+", "[^"]+", "([^"]+)"\);
Template: $1$

Доступ к записанному вами совпадению можно получить с помощью ${MYWORD}

Если вы указали с помощью Match No: выше, используйте соответствующее значение для доступа к совпадению.

person hwnd    schedule 27.11.2013
comment
Потрясающие. Это сработает, но я немного изменил ваше решение. Server.init (. + ?,. + ?, (. +?)); - person Peer Mohamed; 27.11.2013

Это регулярное выражение, хотя и не очень красивое, должно работать при правильном использовании. Но нужно смотреть на результат группы 1, а не на весь матч.

Итак, вам нужно сделать что-то вроде

Pattern regex = Pattern.compile("Server\\.init\\(\"[^\"]+\", \"[^\"]+\", \"([A-Za-z0-9\\-]+)\"\\);");
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
    ResultString = regexMatcher.group(1);
}
person Tim Pietzcker    schedule 27.11.2013

Регулярное выражение:

Server.init\("(.+?)",\s"(.+?)",\s"(.+?)"

Соответствует следующей строке

Server.init("asdfasd4ffffasdf", "http://x.x.x.x:8888/", "asdf-U-Yasdf77asdf99"

мы можем извлечь следующие значения в jmeter:

  • $1 значения = asdfasd4ffffasdf
  • $2 values ​​= http://x.x.x.x:8888/
  • $3 values ​​= asdf-U-Yasdf77asdf99
person Subash Bose    schedule 27.11.2014