jmeter详解正则提取器(关联)
(1)正则表达式提取器
正则提取器界面介绍:
字段含义
字段 | 含义 |
Apply to | 应用范围,选默认的 main sample only 就行了 |
Field to check |
可提取的字段 |
Names of created variables |
|
Regular Expression |
正则表达式 |
Template | 从找到的匹配项中创建字符串的模板 |
Match No.(0 for Random) |
|
Default Value |
|
Use empty default value |
勾选后,提取不到值时,则返回空字符串 |
Template
- 如果一条正则表达式有多个提取结果,则提取结果是数组形式
- 模板 $1$、$2$.....表示把解析到的第几个值赋给变量,从 1 开始匹配
- $0$ 表示整个表达式匹配的内容(后续具体看栗子)
- 若只有一个结果,只能是$1$
Field to check
属性 | 含义 |
Body | 响应体,不包括响应头;最常用 |
Body (unescaped) | 响应体,替换了所有HTML转义符;不建议使用 |
Body as a Document | 从不同类型的文件中提取文本;影响性能 |
Request Headers | 请求头 |
Response Headers | 响应头 |
URL | URL |
Response Code | 响应码 |
Response Message | 响应信息 |
注:正则表达式部分配置说明
说明:匹配数字:-1代代表全部取值
案例:
动态值:name=userSession value=119828.306682868zVzDzzipfcfDzQicpAVVVf>
正则表达式:name=userSession value=(.*)>
注:“name=userSession value=”左边界,“>”右边界
补充:
知识点
- 提其他接口可以通过 ${var} 这种格式,来获取提取到的值
- ( ) 里面写匹配规则,用于解析正则表达式
- .*? 表示匹配任意长度的任意字符,这也是最常用的正则表达式
- 一般 (.+?) 和 (.*?) 能够满足我们 80%的使用场景
一般正则表达式都可以写成下面两种
- 左边界(.+?)右边界
- 左边界(.*?)右边界
2)正则表达式获取数组
一个 ( ) 匹配到多个值的场景 ,一般会结合 ForEach控制器(遍历获取),可以循环将提取到的值赋予到 HTTP 请求中
设置正则表达式获取数据:
利用 FOrEach控制器遍历获取:
获取值传参: