如何从jmeter正则表达式提取器中的响应中获取特定单词

时间:2013-11-27 05:51:20

标签: java regex jmeter

我正在尝试从Jmeter Regular Expression提取器中的字符串中提取最后一个值。

我的字符串

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

我想只获得asdf-U-Yasdf77asdf99

我尝试过类似下面的内容,但不正确:

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

3 个答案:

答案 0 :(得分:1)

正则表达式虽然不是很漂亮,但在正确使用时应该可以正常工作。但是你需要看看第1组的结果,而不是整场比赛。

所以你需要做一些像

这样的事情
Pattern regex = Pattern.compile("Server\\.init\\(\"[^\"]+\", \"[^\"]+\", \"([A-Za-z0-9\\-]+)\"\\);");
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
    ResultString = regexMatcher.group(1);
}

答案 1 :(得分:1)

使用JMeter您需要引用您的匹配组。

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

您可以使用${MYWORD}

访问您捕获的匹配项

如果您使用上面的Match No:指定,请使用相应的值来访问匹配项。

答案 2 :(得分:1)

正则表达式:

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

匹配以下字符串

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

我们可以在jmeter中提取以下值:

  • $1 values = asdfasd4ffffasdf
  • $2 values = http://x.x.x.x:8888/
  • $3 values = asdf-U-Yasdf77asdf99