Jmeter 使用正则表达式提取响应结果中的值

正则表达式提取的界面如下图:

Jmeter 使用正则表达式提取响应结果中的值

apply to:

Main sample and sub-samples:作用于父节点取样器及对应子节点取样器
Main sample only:仅作用于父节点取样器
Sub-samples only:仅作用于子节点取样器
JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)

要检查的响应字段:样本数据源

主体: 接口响应主体内容,默认选择此项
信息头:响应头的所有内容
Request Headers:请求头的所有内容
url:是对sample的url进行匹配,也就是查看结果树里请求内容的第一行url,不包含data里的请求参数
响应代码:http响应代码,如101,200,302,404,501等
响应信息:http响应代码对应的响应信息,例如:OK, Found(HTTP/1.1 200 Ok;HTTP/1.1 302 Found)

引用名称:

其他地方引用时的变量名称,名称只能是一个,引用方法:${变量名称}

正则表达式:

数据提取器,一般简单的通用语法就是:左边界(.*?)右边界,左右边界就是为了能准确定位到想匹配的内容

具体语法如下:

Jmeter 使用正则表达式提取响应结果中的值

 提到正则表达式,必须要说一下匹配的两种模式:贪婪和非贪婪
贪婪与非贪婪模式是两种不同的表达式匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配

模板:

对应正则表达式提取器类型,样式为:
$n$。若模板为:$0$,则为整个表达式匹配到的内容,就是包括小括号内跟小括号外的内容,
若模板为:$1$,则对应正则表达式中的第一个(.*?)所匹配的内容
若模板为:$2$,则对应正则表达式中的第二个(.*?)所匹配的内容
若模板为$1$$2$,则把2个(.*?)所匹配的内容拼接起来,即(83EEAA887F1D2F1AA1CDA9E1978109920)

匹配数字:

正则表达式匹配数据的最终结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。
当为 0 时,随机返回匹配的数据。
当为 1 时,表示返回匹配结果数组的第一个元素
当为负数(-1,-2,-100都可以)时,表示返回全部元素,并且同时会返回一个元素总数的变量
在引用时:通过${变量名_1}的方式来取第1个匹配的内容,${变量名_2}来取第2个匹配的内容

 

缺省值:

匹配失败时的默认值。通常用于后续的逻辑判断,建议使用一些特殊含义的,比如0,NULL,ERROR等。