Jmeter性能测试之正则表达式提取器
目录
前言
1. Jmeter正则表达式提取器
2. 入门实例
3. 进阶实例
前言
Jmeter正则表达式提取器属于Jmeter后置处理器(post processors)的一种,用于将取样器请求到的结果以正则表达式的方式读取出来。
1. Jmeter正则表达式提取器
1. 作用
JSON提取器只能提取响应内容,而正则表达式提取器可以提取响应头、请求头的值,当然也可以提取响应内容。

2. 参数详解

- Apply to:应用范围,选默认的main sample only就行了
- 要检查的响应字段:要提取的字段范围
- 主体:响应体,不包含响应头;最常用
- body(unescaped):响应体,替换了所有HTML转义符;不建议使用
- body as a Document:从不同类型的文件中提取文本;影响性能
- 信息头:响应头
- Requeste Headers:请求头
- URL:URL
- 响应代码:响应码(Response code)
- 响应信息:响应信息(Response message)
- 引用名称:接收提取值的变量名,*必传
- 正则表达式:正则表达式
- 模板:从找到的匹配项中创建字符串的模板
- 如果一条正则表达式有多个提取结果,则提取结果是数组形式
- 模板1、2…表示把解析到的第几个值赋值给变量,从1开始匹配
- 0表示整个表达式匹配的内容
- 若只有一个结果,只能是1
- 匹配数字(0代表随机):取第几个值(0:随机,默认;-1所有;1第一个值),非必传
- 缺省值:缺省值,匹配不到值的时候取该值,非必传
- Use empty default value:勾选后,提取不到值时,则返回空字符串
Name of created variable(将通过正则表达式截取到的值,存到变量中,指定该变量的名称)
当使用正则表达式从一个请求返回信息中,截取多个字段时,此处也可只填写一个变量,如下图所示。
此时,截取到的多个值将会以变量名_g1、变量名_g2来使用,详见下图,这是自己专门实验的截图。

- 变量=截取的全部字段,彼此字段间以空格相隔,如上图第一行。
- 变量_g:应代表截取的变量个数?
- 变量_g0: 根据正则表达式匹配到的(截取前的)完整字段。
- 变量_g1:截取到的第一个字段,使用时${变量名_g1}。
- 变量_g2:截取到的第二个字段,使用时${变量名_g2},如下图所示。

Regular Expression(正则表达式)
可百度在线正则表达式来练习正则表达式,此处先给出一个在线正则网址。
Template($1$表示会拿到第一个正则表达式匹配到的数据,待确认)
自己的理解,模板Template的含义是提取结果的返回格式模板(当你在Regular Expression(正则表达式)处设置多个提取点时,例如"errmsg":"(.*)","access_token":"(.+?)",那么提取的多个值将以模板Template设置的格式来返回给用户)。
目前自己从其他网商博客了解的信息是,如果在提取器的正则表达式处填写了多个提取点(例如,"errmsg":"(.*)","access_token":"(.+?)"。这对于Jmeter来说,会将此表达式当作两个正则表达式来处理——"errmsg":"(.*)","access_token":和,"access_token":"(.+?)",则可以在Template处填写$1$、$2$等等。$1$代表第一个正则表达式"errmsg":"(.*)","access_token":的截取结果,$2$代表第二个正则表达式,"access_token":"(.+?)"的截取结果,依次类推(注:如果在Template处填写的$1$和$2$间有空格,提取出的(.*)和(.+?)也会以对应空格间隔)。
$0$指全文匹配,$1$ $2$指同时获取第一个和第二个提取点。
Match No.(第几个匹配成功的)
Default Value(当未匹配到时,使用此值返回)
参数不好理解,下面来举例子啦~
3. 正则表达式提取器实栗
还是以这个地址的接口来测试哦
YesApi 小白免费接口 | 果创云,一个账号,搞定接口开发
2. 入门实例

会员登录接口的响应内容:
{"ret": 200,"data": {"err_code": 0,"err_msg": "","uuid": "F118DD335346CE9D7094C97190587108","token": "C1CA708E57F0C33E548745B0D82ADA2A800D886D17BA44261459C39C52376C0D","role": "user"},"msg": "V3.3.0 YesApi App.User.Login 2022-03-20 10:25:40 hd215"
}
正则表达式提取器-提取token:

正则表达式提取器-提取uuid:

- 正则表达式-----
( )里面写匹配规则,用于解析正则表达式 - 正则表达式-----
.*?表示匹配任意长度的任意字符,这也是最常用的正则表达式 - 一般(.+?)和(.*?)能够满足我们80%的使用场景
其他接口调用正则表达式提取的变量:

3. 进阶实例
测试接口:http://api.yesapi.cn/docs-api-App.User.GetList.html
响应内容:
{"ret":200,"data":{"err_code":0,"err_msg":"","users":[{"uuid":"F118DD335346CE9D7094C97190587108","username":"xey032001","role":"user","role_desc":"普通会员","status":0,"status_desc":"正常","reg_time":"2022-03-20 10:25:40","ext_info":{"yesapi_avatar":"","yesapi_nickname":"","yesapi_email":"","yesapi_sex":"","yesapi_real_name":"","yesapi_points":0,"yesapi_reg_source":"","yesapi_reg_note":"","yesapi_mobile":"","yesapi_expiration_time":""}},{"uuid":"AAC71046CFA51B8A55D4367652791D66","username":"xey04","role":"user","role_desc":"普通会员","status":0,"status_desc":"正常","reg_time":"2022-03-19 13:22:24","ext_info":{"yesapi_avatar":"","yesapi_nickname":"","yesapi_email":"","yesapi_sex":"","yesapi_real_name":"","yesapi_points":0,"yesapi_reg_source":"","yesapi_reg_note":"","yesapi_mobile":"","yesapi_expiration_time":""}},{"uuid":"97F22D1CD99D17C2CF29510C728F6570","username":"xey03","role":"user","role_desc":"普通会员","status":0,"status_desc":"正常","reg_time":"2022-03-19 13:18:56","ext_info":{"yesapi_avatar":"","yesapi_nickname":"","yesapi_email":"","yesapi_sex":"","yesapi_real_name":"","yesapi_points":0,"yesapi_reg_source":"","yesapi_reg_note":"","yesapi_mobile":"","yesapi_expiration_time":""}},{"uuid":"770A6910AF264AEB73F6ECAFEB5BBFB6","username":"xey02","role":"user","role_desc":"普通会员","status":0,"status_desc":"正常","reg_time":"2022-03-19 13:15:35","ext_info":{"yesapi_avatar":"","yesapi_nickname":"","yesapi_email":"","yesapi_sex":"","yesapi_real_name":"","yesapi_points":0,"yesapi_reg_source":"","yesapi_reg_note":"","yesapi_mobile":"","yesapi_expiration_time":""}},{"uuid":"690815A62298F01009010BA062773A9F","username":"xey01","role":"user","role_desc":"普通会员","status":0,"status_desc":"正常","reg_time":"2022-03-19 13:14:03","ext_info":{"yesapi_avatar":"","yesapi_nickname":"","yesapi_email":"","yesapi_sex":"","yesapi_real_name":"","yesapi_points":0,"yesapi_reg_source":"","yesapi_reg_note":"","yesapi_mobile":"","yesapi_expiration_time":""}},{"uuid":"24249E71ABBD72D7C1DE8B3E95A0FBBE","username":"xey","role":"user","role_desc":"普通会员","status":0,"status_desc":"正常","reg_time":"2022-03-19 13:08:25","ext_info":{"yesapi_avatar":"","yesapi_nickname":"","yesapi_email":"","yesapi_sex":"","yesapi_real_name":"","yesapi_points":0,"yesapi_reg_source":"","yesapi_reg_note":"","yesapi_mobile":"","yesapi_expiration_time":""}}],"total":6},"msg":"V3.3.0 YesApi App.User.GetList 2022-03-20 11:16:58 hd215"
}
1)提取一个值:
正则表达式中只提取一个值,且匹配数字不是-1
1. 未填写模板

PS:匹配数字填1,表示如果有多个uuid,则匹配到第一个,这里与JSON提取器相同
测试结果:
uuid=
uuid_g=1
uuid_g0="uuid":"F118DD335346CE9D7094C97190587108"
uuid_g1=F118DD335346CE9D7094C97190587108
可以看到,如果正则匹配到值,但是没有填写模板,则返回空
2. 模板写$0$

测试结果:
uuid="uuid":"F118DD335346CE9D7094C97190587108"
uuid_g=1
uuid_g0="uuid":"F118DD335346CE9D7094C97190587108"
uuid_g1=F118DD335346CE9D7094C97190587108
可以看到,如果模板填写的$0$,uuid取的是uuid_g0
3. 模板写$1$
测试结果:
uuid=F118DD335346CE9D7094C97190587108
uuid_g=1
uuid_g0="uuid":"F118DD335346CE9D7094C97190587108"
uuid_g1=F118DD335346CE9D7094C97190587108
可以看到,如果模板写$1$,uuid取的是uuid_g1
4. 模板写$2$(不存在)
测试结果:
uuid=null
uuid_g=1
uuid_g0="uuid":"F118DD335346CE9D7094C97190587108"
uuid_g1=F118DD335346CE9D7094C97190587108
可以看到,如果模板不存在,uuid为null(即使勾选了使用空默认值,也返回null)
2)提取多个值:

测试结果:
uuid_1=F118DD335346CE9D7094C97190587108
uuid_1_g=1
uuid_1_g0="uuid":"F118DD335346CE9D7094C97190587108"
uuid_1_g1=F118DD335346CE9D7094C97190587108
uuid_2=AAC71046CFA51B8A55D4367652791D66
uuid_2_g=1
uuid_2_g0="uuid":"AAC71046CFA51B8A55D4367652791D66"
uuid_2_g1=AAC71046CFA51B8A55D4367652791D66
uuid_3=97F22D1CD99D17C2CF29510C728F6570
uuid_3_g=1
uuid_3_g0="uuid":"97F22D1CD99D17C2CF29510C728F6570"
uuid_3_g1=97F22D1CD99D17C2CF29510C728F6570
uuid_4=770A6910AF264AEB73F6ECAFEB5BBFB6
uuid_4_g=1
uuid_4_g0="uuid":"770A6910AF264AEB73F6ECAFEB5BBFB6"
uuid_4_g1=770A6910AF264AEB73F6ECAFEB5BBFB6
uuid_5=690815A62298F01009010BA062773A9F
uuid_5_g=1
uuid_5_g0="uuid":"690815A62298F01009010BA062773A9F"
uuid_5_g1=690815A62298F01009010BA062773A9F
uuid_6=24249E71ABBD72D7C1DE8B3E95A0FBBE
uuid_6_g=1
uuid_6_g0="uuid":"24249E71ABBD72D7C1DE8B3E95A0FBBE"
uuid_6_g1=24249E71ABBD72D7C1DE8B3E95A0FBBE
uuid_matchNr=6
一个正则表达式有多个( ):
1. 模板为空:

测试结果:
uuid=
uuid_g=2
uuid_g0="uuid":"F118DD335346CE9D7094C97190587108","username":"xey032001"uuid_g1=F118DD335346CE9D7094C97190587108
uuid_g2=xey032001
可以看到,如果模板为空,取不到值,uuid为空
2. 只有一个模板:

测试结果:
uuid=F118DD335346CE9D7094C97190587108
uuid_g=2
uuid_g0="uuid":"F118DD335346CE9D7094C97190587108",
"username":"xey032001"uuid_g1=F118DD335346CE9D7094C97190587108
uuid_g2=xey032001
可以看到,如果只有一个模板,取到了uuid_g1
3. 有两个模板:

测试结果:
uuid=F118DD335346CE9D7094C971q90587108,
xey032001
uuid_g=2
uuid_g0="uuid":"F118DD335346CE9D7094C97190587108",
"username":"xey032001"uuid_g1=F118DD335346CE9D7094C97190587108
uuid_g2=xey032001
可以看到,uuid取到了两个值uuid_g1和uuid_g2,并且用逗号拼接
注意:
- 引用名称、匹配数字、缺省值只需要填一个即可,不需要跟正则表达式的数量一致
- 也可以用. - 拼接,只要模板也用. 或- 拼接即可,如模板填:1-2q
参考文章:
Jmeter正则表达式提取器_jmeter的正则表达式提取器_龙俊亨的博客-CSDN博客
Jmeter基础入门教程【11】--常用功能详解:正则提取器_jmeter正则提取器_短尾巴小鳄鱼的博客-CSDN博客
相关文章:
Jmeter性能测试之正则表达式提取器
目录 前言 1. Jmeter正则表达式提取器 2. 入门实例 3. 进阶实例 前言 Jmeter正则表达式提取器属于Jmeter后置处理器(post processors)的一种,用于将取样器请求到的结果以正则表达式的方式读取出来。 1. Jmeter正则表达式提取器 1. 作用…...
浅谈Kubernetes中Service网络实现(服务发现)
目录 CoreDNS(Kube-DNS) Kube-proxy kube-proxy的三种实现模式 iptables模式 IPVS模式 之前的文章介绍了Kubernetes中基于service实现了集群内部的网络通信,这篇文章详细聊一下Kubernetes中的Service网络本身又是如何实现的。...
【重造轮子】golang实现可重入锁
造个可重入锁的轮子 介绍目标 正文sync.Mutexsync.Mutex介绍多协程计数器demo多协程计数器加锁 源码剖析Mutex数据结构Lock()加锁核心逻辑 UnLock() 重入锁与可重入锁魔改 sync.Mutex 参考文档 介绍 开新坑啦!! 从这篇文章开始,尝试造轮子&a…...
torch显存分析——对生成模型清除显存
torch显存分析——对生成模型清除显存 1. 问题介绍2. 应对方法 1. 问题介绍 本文主要针对生成场景下,如何方便快捷地清除当前进程占用的显存。文章的重点不止是对显存的管理,还包括怎样灵活的使用自定义组件来控制生成过程。 在之前的文章torch显存分析…...
electron+vue+ts窗口间通信
文章目录 一. 目的二.逻辑分析三. 代码示例 "types/node": "^20.3.1","vitejs/plugin-vue": "^4.1.0","vueuse/electron": "^10.2.1","electron": "^25.2.0","electron-packager":…...
基于Fringe-Projection环形投影技术的人脸三维形状提取算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .................................................................... figure; imshow(Im…...
如何使用Webman框架实现多语言支持和国际化功能?
如何使用Webman框架实现多语言支持和国际化功能? Webman是一款轻量级的PHP框架,提供了丰富的功能和扩展性,使得开发人员能够更加高效地开发Web应用程序。其中,多语言支持和国际化功能是Web应用程序中非常重要的一项功能ÿ…...
接受平庸,特别是程序员
目录 方向一:简述自己的感受 方向二:聊聊你想怎么做 方向三:如何调整自己的心态 虽然清楚知识需要靠时间沉淀,但在看到自己做不出来的题别人会做,自己写不出的代码别人会写时还是会感到焦虑怎么办? 你是…...
HTML兼容性
文章目录 一、兼容性二、兼容问题1. 在IE6下,子级的宽度会撑开父级设置好的宽度2. IE6中,元素浮动,如果宽度需要内容撑开,需要给里面的块元素都添加浮动才可以3. 在IE6、7下,元素要通过浮动排在同一排,就需…...
Java日期和时间处理入门指南
文章目录 1. 日期操作 - java.util.Date1.1 构造方法1.2 常用方法 2. 日期格式化 - java.text.SimpleDateFormat2.1 获取对象2.2 方法 3. 获取时间分量 - java.util.Calendar3.1 时间分量3.2 创建对象3.3 常用的时间分量3.4 获取时间分量3.5 设置时间分量 结语 引言:…...
anndata k折交叉
如何将anndata拆分为k份 import scanpy as sc import anndata as adclass KSplitAnndata:staticmethoddef _base_split(data: object, k: int) -> list:adata data.copy()num adata.n_obs // kadata_list []for i in range(k):if num < adata.n_obs:adata_list.appen…...
深入解析项目管理中的用户流程图
介绍用户流程图 用户流程图的定义 用户流程图(User Flow Diagram)是一种可视化工具,它描绘了用户在应用或网站上完成任务的过程。这些任务可以是购物、注册账户、查找信息等,任何需要用户交互的动作都可以在用户流程图中找到。 用户流程图的重要性 用…...
Vue使用QrcodeVue生成二维码并下载
生成二维码 1、安装qrcode.vue组件 npm install --save qrcode.vue<template><div id"app"><qrcode-vue :valuevalue :sizesize></qrcode-vue><br /></div> </template><script> //导入组件 import QrcodeVue fro…...
“用户登录”测试用例总结
前言:作为测试工程师,你的目标是要保证系统在各种应用场景下的功能是符合设计要求的,所以你需要考虑的测试用例就需要更多、更全面。鉴于面试中经常会问“”如何测试用户登录“”,我们利用等价类划分、边界值分析等设计一些测试用…...
适应于Linux系统的三种安装包格式 .tar.gz、.deb、rpm
deb、rpm、tar.gz三种Linux软件包的区别 rpm包-在红帽LINUX、SUSE、Fedora可以直接进行安装,但在Ubuntu中却无法识别; deb包-是Ubuntu的专利,在Ubuntu中双击deb包就可以进入自动安装进程; tar.gz包-在所有的Linux版本中都能使用…...
Linux lvs负载均衡
LVS 介绍: Linux Virtual Server(LVS)是一个基于Linux内核的开源软件项目,用于构建高性能、高可用性的服务器群集。LVS通过将客户端请求分发到一组后端服务器上的不同节点来实现负载均衡,从而提高系统的可扩展性和可…...
Tomcat 创建https
打开CMD,按下列输入 keytool -genkeypair -alias www.bo.org -keyalg RSA -keystore d:\ambition.keystore -storetype pkcs12 输入密钥库口令:123456 再次输入新口令:123456 您的名字与姓氏是什么? [Unknown]: www.ambition.com 您的组织单位名称是什么? [Unknown…...
超导电性的基本现象和相关理论
超导体 Hg 超导电性的基本现象和相关理论 超导体的基本特性 低温零电阻突变(< 10^{-23 \Omega/m}) 良导体在 10^{-10} \Omega/m临界温度迈斯纳效应 完全排磁通效应(完全抗磁性) 超导体物体内部不存在电场 第一类超导体与第二类…...
在 PHP 中单引号(‘ ‘)和双引号(“ “)用法的区别
在 PHP 中,使用单引号( )和双引号(" ")可以创建字符串。这两种引号的用法有一些区别。 单引号: 单引号用于创建简单的字符串,其中的变量和转义字符将不会被解析。单引号中的任何内容…...
SpringCloudAlibaba:服务网关之Gateway的cors跨域问题
目录 一:解决问题 二:什么是跨域 三:cors跨域是什么? 一:解决问题 遇到错误: 前端请求时报错 解决: 网关中添加配置文件,注意springboot版本,添加配置。 springboo…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
