使用jmeter的同学都知道,jmeter提供了各种各样的提取器,如jsonpath、Beanshell、Xpath、正则等!!!

  我们就针对正则提取器如何使用进行说明。

举例说明:假设取sessionId值

{"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个字符,匹配任何字符前的位置。
posted on 2017-03-15 11:32  niuzhigang  阅读(1921)  评论(0编辑  收藏  举报