在很多情况下,我们需要提取响应结果中的一些信息,供后续功能使用。可以使用后置处理器中的正则表达式提取器。
一、正则表达式提取器
二、配置说明
1、姓名:标识
2、注释:备注
3、Apply to:正则表达式提取内容的范围(一般就选择默认的Main sample only)
4、要检查的响应字段:需要提取的数据源
5、引用名称:变量名,供其他地方使用,和Jmeter变量引用一致(${变量名})
6、正则表达式:提取的正则表达式
(1、使用()表示需要提取的部分--一定要是英文模式下的小括号
(2、. 表示匹配任何字符
(3、+ 一次或多次
(4、?表示在找到第一个匹配项后停止寻找
----注意点1:
一般情况需要窃取的是其中的某一部分,所以一定要使用?,再找到自己需要的数据后,就停止;在使用?的()后需要添加终止的点,不然会在找到第一个字符就停下。
比如:
字符串为:A:11,B:12
在提取的时候,不加?---A:(.+)---->提取的值为:11,B:12
在提取的时候,加?但是不加结束点---A:(.+?)---->提取的值为:1
想正确的取值到11,配置为:A:(.+?),
-----重点2:要提取不是相邻位置(即:中间隔了其他字符)的两个或多个字符,可使用:.+?进行连接
如:
"A1":"([^"]+?)".+?"C1":"(.+?)"
这样会在提取A1后,不管中间的内容,再提取C1的数据。
7、模板:对应提取的模式,样式为:$n$,n标识提取的第几个变量
(如果提取了多个值,可以通过$1$,$2$,$...$提取出相应的值)
如:正则表达式为:
"A1":"([^"]+?)","C1":"(.+?)"
模板可以设置为:$1$,$2$---$1$表示匹配A1后的值;$2$表示破匹配C1后的值;
在提取多个时,如果模板设置为$2$将只提取C1后的数据;
8、匹配数字:正则提取后的结果可以看做是一个数组,匹配数字即可看成是数组的第一个元素。
(0代表随机取值,-1代表所有值,其余正整数代表第几个匹配的内容;如果设置为-1,可以通过:${status_1}提取出第一个值;其他类似)
在设置为-1时,也可以和ForEach Controller一起使用来遍历所有的数据。
9、缺省值:在正则表达式匹配失败时,取的值。