使用jmeter的同学都知道,jmeter提供了各种各样的提取器,如jsonpath、Beanshell、Xpath、正则等!!!
我们就针对正则提取器如何使用进行说明。
举例说明:假设取sessionId值
1
|
{ "success" : true , "errorCode" : 710000 , "msg" : "OK" , "data" :{ "sessionId" : "xxxxxx" , "isLogin" : 0 }} |
首先,可以很模糊的提取一个key的value。
验证sessionId获取是否正确
再者就是准确的正则提取:
下面是各参数值的含义:
引用名称:提取到的字符串要赋给哪个参数。之后就可以用${publicKeyModulus}来表示提取到的值了。如:(由于是String类型,因此需要加引号)
正则表达式:使用正则表达式提取的内容。
模板:代表要正则表达式中第几个()的匹配?建议基本上都是$1$,如果是
匹配数字:假如表达式可以匹配到多个字符串,选择第几个。一般都是1,第一个,还有注意就是-1代表取所有值
如果匹第二个?匹配数字填2即可!
关于正则表达式的举例说明:
1、提取单个字符串:
上述例子就是提取单个字符串
():封装了待返回的匹配字符串。
.:匹配任何单个字符串。
+:一次或多次。
?:不要太贪婪,在找到第一个匹配项后停止。
2、提取多个字符串:
按照sessionId_g1,sessionId_g2分别获取sessionId和isLogin
其实如果模板只有$1$一个组,取值也可以用${sessionId_g1}来取,因为它属于组1,只不过只有1个组或者后面不跟_g1默认为第一组。
如:(由于isLogin为整型,因此(.+?)不需要引号)
另外说明:如果匹配数字为-1就是代表取所有匹配到的值,如下:
借用上面的结构
那么针对这种情况如何取值?
“引用名称_第几个值_那个组”具体如下
另外:一些空字符的正则表达式!
可以匹配文档中任何一个位置。
\s 空白符
\S 非空白符
[\s\S]任意字符
[\s\S]* 0个到任意多个字符
[\s\S]*? 0个字符,匹配任何字符前的位置。