有了 JSON 提取器为啥还要用正则提取器?
- JSON 提取器只针对接口返回的响应内容
- 如果想提取的是响应头、请求头的值,而非响应内容的值呢?
- 这个时候正则提取器的作用就出来了,它可以提取请求任一部分的
正则提取器界面介绍
字段含义
字段 | 含义 |
Names of created variables (引用名称) |
|
Regular Expression (正则表达式) |
填写正则表达式 |
Template(模板) |
从找到的匹配项中创建字符串的模板 若模板为:$0$,则为整个表达式匹配到的内容(这里为整个响应报文) 依次类推......($1$和$1$指的是正则表达式有多个,如:“正则表达式1”,“正则表达式2”) |
Match No.(0 for Random) (匹配数字) |
|
Default Value (缺省值) |
|
Use empty default value (使用空默认值) |
勾选后,提取不到值时,则返回空字符串 |
Field to check
属性 | 含义 |
Body(主体) | 响应体,不包括响应头;最常用 |
Body (unescaped) | 响应体,替换了所有HTML转义符;不建议使用 |
Body as a Document | 从不同类型的文件中提取文本;影响性能 |
Request Headers(信息头) | 请求头 |
Response Headers | 响应头 |
URL | URL |
Response Code | 响应码 |
Response Message | 响应信息 |
Template
- 如果一条正则表达式有多个提取结果,则提取结果是数组形式
- 模板 $1$、$2$.....表示把解析到的第几个值赋给变量,从 1 开始匹配
- $0$ 表示整个表达式匹配的内容
- 若只有一个结果,只能是$1$
- 知识点1
$0$ 模板其实返回的就是 uuid2_g0 的值
返回了整个正则表达式,不只是 ( ) 内匹配到的值
仅返回 ( ) 内匹配到的值
- 知识点2
- 一个 ( ) 匹配到多个值的场景 ,一般会结合 ForEach控制器,可以循环将提取到的值赋予到 HTTP 请求中
一条表达式有多个( ),且只有一个模板
-
测试结果
1 info2=0564CE592B4CE914365D8922F6FC4CEC 2 info2_g=2 3 info2_g0="uuid":"0564CE592B4CE914365D8922F6FC4CEC","username":"luojunjiess286" 4 info2_g1=0564CE592B4CE914365D8922F6FC4CEC 5 info2_g2=luojunjiess286
知识点
info2 拿的就是 info2_g1 的值
$1$ 获取的是第一个 ( ) 匹配到的值, $2$ 获取的是第二个 ( ) 匹配到的值,以此类推
一条表达式有多个( ),且有两个模板
待续。。。。。。。。。。。。。。。。。。。。。。。。。。。
标签:info2,匹配,正则表达式,响应,正则,提取,Jmeter,模板 From: https://www.cnblogs.com/dersome/p/17035738.html