jmeter中正则提取元件的使用总结
正则提取器的一般使用场景是, 在我第二个请求参数中需要加入第一个请求的返回值, 此时通过正则提取器可以提取第一个请求返回值中指定的字段信息并赋值, 在第二个请求参数中直接引用该变量即可
jmeter的正则提取器截图如下:
简单介绍下其中几个比较重要的字段的信息, 如下表
参数 | 释义 |
---|---|
引用名称 | 在HTTP等请求中,引用此数据,需要用到的名称 |
正则表达式 | 用于将需要的数据提取出来, 一般简单的通用语法就是:左边界(.*?)右边界 , 其中(.*?) 是替换了想要提取的内容,里面的'?' 为非贪婪匹配 |
模板 | 表示正则表达式中的第几个提取值:$负数$ :表示取所有值$0$ :表示随机取值$1$ :表示取第1个$2$ :表示取第二个$1$$2$ : 表示第一个和第二个拼接起来以此类推: $n$ :表示取第n个例如 "token":"(.*?)","sex":(.*?),"userName" , $1$ 表示前一个匹配值, $2$ 表示第二个匹配值 ,如果只有一个正则表达式提取值, 直接使用$1$ 匹配即可 |
匹配数字(0代表随机) | 返回匹配结果数组的某个元素, 0 代表随机取值,1 代表第一个值, 负数 表示返回全部元素 |
缺省值 | 默认值, 即没有匹配到值时的默认值 |
接下来看下实际的使用,
如图所示, 取登录后返回的ticket值, 此时因为方便说明, 使用"(.*?)"
来获取返回值中双引号之间的内容:
添加debug元件, 展示debug信息如下,
此时, ${ticket}
表示取的是第一列的值, 第一列是由模板上的$1$
确定的,
此时Match No设置为-1
,表示会返回所有匹配值数组的元素, 可以看到返回有三个元素分别为${ticket_1}
,${ticket_2}
,${ticket_3}
此时, 若有多行数据, 且模板处设置的为$1$
, 如果选择第一个数组元素, 则:
• ${ticket_1_g0}
取的都是第一个匹配值的第一列全部的数据
• ${ticket_1_g1}
取的是第一个匹配值的第一列第一行的数据,
• ${ticket_1_g2}
取的是第一个匹配值的第一列第二行的数据,
* ${ticket_2_g1}
取的是第二个匹配值的第一列第一行的数据,
再来看一个比较简单的正则, 如下, 只取匹配值中的第一个元素:
Match No设置为1
, 表示只会选择返回的匹配值数组当中的第一个元素, 直接使用${ticket}
表示即可, 此时, 若有多行数据, 且模板处设置的为$1$
, 则:
• ${ticket_g0}
取的都是第一列全部的数据
• ${ticket_g1}
取的是第一列第一行的数据,
• ${ticket_g2}
取的是第一列第二行的数据,