正则表达式HTTP响应正文消息

时间:2015-04-15 09:58:41

标签: regex jmeter httprequest http-response-codes

我使用jmeter进行REST测试。 我发了一个HTTP请求,这是响应数据:

{"id":11,"name":"value","password":null,"status":"ACTIVE","lastIp":"0.0.0.0","lastLogin":null,"addedDate":1429090984000}

我只需要

中的ID(11)
{"id":11,....

我使用下面的REGEX:

([0-9].+?)

它完美无缺,但如果我的ID超过2位,则会出现问题。我需要将REGEX更改为:

([0-9][0-9].+?)

我的问题是否有任何动态REGEX。谢谢你的关注。

此致 Stefio

3 个答案:

答案 0 :(得分:2)

如果您想要{"id":,之间的任何整数,请使用以下正则表达式:

{"id":(\d+),

然而,处理JSON数据的更智能方式可能是JSON Path Extractor(可通过JMeter Plugins获得),未来可以更轻松地使用此选项来复杂的JSON。

请参阅Using the XPath Extractor in JMeter指南(向下滚动到"解析JSON")以了解有关语法和用例的更多信息。

答案 1 :(得分:1)

我建议使用以下正则表达式:

"id":([^,]*),

这将首先找到" id":然后在找到逗号之前查找不是逗号的任何内容。请注意,字符分组仅在ID的值附近。

这适用于任何长度ID。

编辑: 相同的概念适用于几乎所有JSON数据,例如引用值的地方:

"key":"([^"]*)"

只要引用了值且不包含引号,该正则表达式将从给定键中提取值。它首先找到" key":然后在下一个引用之前匹配任何不是引用的内容。

答案 2 :(得分:0)

你可以像这样使用量词:

([0-9]{2,}.+?)

它会捕获2个或更多数字,然后是任何符号,1次或更多次。如果您想在数字后面不允许其他字符,请使用*代替+

([0-9]{2,}.*?)

Regex demo