jmeter 正则表达式学习--使用详解
jmeter自带后置处理器:正则表达式提取器,可以用来提取接口响应里的信息,给予后续接口传参用。
例如要提取响应结果里的token字段及sex字段(响应内容为:
"token":"83EEAA887F1D2F1AA1CDA9E197810992","sex":0,"userName":"12548650"),提取器如下设置,
正则表达式提取器说明:
Apply to:应用范围(一般就选择默认的Main sample only),就算有重定向,一般也是提取最终那个请求的接口。
要检查的响应字段:样本数据源。
主体: 接口响应主体内容,一般要提取普通http响应结果的数据,都勾选这个。
信息头:响应头的所有内容。
Request Headers:请求头的所有内容。
url:是对sample的url进行匹配,也就是查看结果树里请求内容的第一行url,不包含data里的请求参数(即只能匹配protocol(协议)+host+path+querystring,如:https://www.baidu.com/index.php?tn=monline_3_dg)。
响应代码:http响应代码,如101,200,302,404,501等。
响应信息:http响应代码对应的响应信息,例如:OK, Found(HTTP/1.1 200 Ok;HTTP/1.1 302 Found)。
引用名称:其他地方引用时的变量名称,名称只能是一个,引用方法:${token}。如图
正则表达式:数据提取器,一般简单的通用语法就是:左边界(.*?)右边界,左右边界就是为了能准确定位到想匹配的内容,如最上面图的"token":"(.*?)","sex":(.*?),"userName", 其中"token":"以及","sex": 和,"userName"这3个就是左右边界,(.*?) 是替换了想要提取的内容,里面的'?'为非贪婪匹配,(非贪婪模式就是说在遇到第一个右边界后就停止匹配,这样就可以精确拿到想要的内容)。建议均使用非贪婪匹配,除非特殊情况。
模板:对应正则表达式提取器类型,样式为:$n$。若模板为:$0$,则为整个表达式匹配到的内容,就是包括小括号内跟小括号外的内容,即("token":"83EEAA887F1D2F1AA1CDA9E197810992","sex":0,"userName")。若模板为:$1$,则对应正则表达式中的第一个(.*?)所匹配的内容,即(83EEAA887F1D2F1AA1CDA9E197810992) ,若模板为:$2$,则对应正则表达式中的第二个(.*?)所匹配的内容,即(0),若模板为$1$$2$,则把2个(.*?)所匹配的内容拼接起来,即(83EEAA887F1D2F1AA1CDA9E1978109920)。模板是可以自由组合的,后续案例中再介绍。
匹配数字:正则表达式匹配数据的最终结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。当为 0 时,随机返回匹配的数据。当为 1 时,表示返回匹配结果数组的第一个元素。当为负数(-1,-2,-100都可以)时,表示返回全部元素,并且同时会返回一个元素总数的变量token_matchNr,在引用时:通过${token_1}的方式来取第1个匹配的内容,${token_2}来取第2个匹配的内容。
缺省值:匹配失败时的默认值。通常用于后续的逻辑判断,建议使用一些特殊含义的,比如0,NULL,ERROR等。
正则测试:
可以直接在察看结果树里选择Regexp正则测试模式来测试正则是否写的正确。
正则结果查看:
如何查看提取到了想要的内容呢,这里就需要提到另外一个后置处理器:Debug PostProcessor
该元件就为调试所用,一般用于查看变量值,添加方法同正则表达式提取器。
附正则表达式说明:
通俗点来讲正则表达式就是用来匹配字符串的公式。比如正则表达式中\d+ 是来匹配1个或更多连续的数字。更多可自行百度了解
万能表达式:key="value"获取value可用万能表达式:key="([^"]+)" //value里面有任何符号都可以取出
<a href="ForEachTest2.jmx">ForEachTest2.jmx</a>同样可以使用万能表达式<a href="([^"]+)"来取出来“ForEachTest2.jmx”
举例说明:
例子贴一下
先贴一下模板的例子,这里会匹配到一个字符串,区别就在于这里是2个正则,匹配的结果大概是
(1)$1$$2$,因为写了2个,这里直接调用${name}的结果是李华一 1, ${name_g1}是李华一 ${name_g2}是1
name=李华一1
name_g=2
name_g0=name":"李华一","sex":1,
name_g1=李华一
name_g2=1
(2)选择$1$的写法,这时候${name}=李华一 ${name_g1}=李华一 ${name_g2}=1
name=李华一
name_g=2
name_g0=name":"李华一","sex":1,
name_g1=李华一
name_g2=1
(3)接着看下$2$会怎样,猜测是${name}=1 ${name_g1}=李华一 ${name_g2}=1,果然正确
name=1
name_g=2
name_g0=name":"李华一","sex":1,
name_g1=李华一
name_g2=1
通过以上的栗子和截图彻底明白了$1$$2$是啥意思了
下面是匹配数字选项的例子
(1)-1代表全部取值
(2)1代表取第一个值
(2)2代表取第二个值
(3)0代表取随机值,填写0的时候取值是随机的,就不贴图了
4怎样测试正则表达式?即怎样验证你写的正则表达式提取器内容是否正确
添加以后运行就可以debug
摘自:https://www.cnblogs.com/xueli/p/7405258.html?utm_source=itdadao&ut
jmeter 正则表达式学习--使用详解相关推荐
- 深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG) 优化算法
深度学习优化函数详解系列目录 深度学习优化函数详解(0)– 线性回归问题 深度学习优化函数详解(1)– Gradient Descent 梯度下降法 深度学习优化函数详解(2)– SGD 随机梯度下降 ...
- dreamweaver 正则表达式为属性值加上双引号_PHP正则表达式核心技术完全详解 第2节...
PHP 正则表达式核心技术完全详解 第2节 接上一节内容 1 普通字符作为原子 /5/ 用于匹配字符串中是否有5这个字符出现 /php/ 用于匹配字符串中是否有PHP字符串出现 / / 匹配空字符串 ...
- 站长在线Python精讲:Python中正则表达式的语法详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<Python中正则表达式的语法详解>.本知识点主要内容有9点:行定位符.元字符.限定符.字符集.排除字符.选择字符.转义字符 ...
- Jmeter压测工具详解
Jmeter压测工具详解 1. Jmeter概述 1.1 Jmeter简介 1.2 Jmeter适用场景 2. Jmeter安装配置 2.1 下载安装 2.2 环境配置(可不配) 2.3 Jmeter ...
- 【深度学习】详解Resampling和softmax模型集成
[深度学习]详解Resampling和softmax模型集成 文章目录 1 图像重采样1.1 次级采样(sub-sampling)1.2 高斯金字塔(Gaussian pyramids)1.3 上采样 ...
- Java JUC学习 - ConcurrentLinkedDeque 详解
Java JUC学习 - ConcurrentLinkedDeque 详解 0x00 前言 如何实现并发程序,对于Java以及其他高级语言来说都是一件并不容易的事情.在大一上学期的时候,我们学习了链表 ...
- php add action,WordPress学习——add_action()详解
add_action() 是 WordPress 核心代码执行期间或特定事件发生时启动的钩子函数. 插件可以指定使用 Action API 在这些特定点上执行其一个或多个PHP函数.简单来说就是通过 ...
- EditPlus正则表达式替换字符串详解
EditPlus正则表达式替换字符串详解 发布时间:April 8, 2007 分类:Regular <PHP 实现多服务器共享 SESSION 数据> <利用javascript在 ...
- 深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG)
深度学习优化函数详解系列目录 本系列课程代码,欢迎star: https://github.com/tsycnh/mlbasic 深度学习优化函数详解(0)-- 线性回归问题 深度学习优化函数详解(1 ...
最新文章
- vue小项目总结与笔记【五】——一个轮播图插件vue-awesome-swiper
- imageview不显示图片
- java字符函数_java字符串函数用法汇总
- Vue第二部分(4): 嵌套路由和路由传参
- 阿里云服务器ECS Ubuntu18.04 首次使用配置教程(图形界面安装)
- 计算机360u盘删除,怎么关闭360U盘小助手
- JS同步执行延时函数的实现
- python 12306抢票脚本_Python 12306抢火车票脚本
- 计算机睡眠功能命令,使用WINDOWS命令行进入睡眠模式
- 案例|工业物联网解决方案•工业互联网云平台
- zotero文献管理器及其使用姿势(不定时更新)
- python中char是什么意思_MySQL中char和varchar的区别是什么
- python学习(二)配置开发IDE(windows)
- echars显示地图
- [转载] 毕业半年,我在富士康的日日夜夜
- 定积分应用——求旋转体体积
- 机原自检——第4章 平面机构的力分析
- 点云孔洞定位_孔洞修补研究总结
- 外贸知识通俗教程(上)
- Java API操作ES
热门文章
- 2022“高考记忆” 已打包完成,请查收!
- 读万卷书,写万行代码
- 电脑重装系统后安全中心有个黄色感叹号如何处理
- Kotlin let with run apply also filter if常规用法笔记
- 防范勒索蠕虫病毒入侵,3分钟教你快速关闭高危端口445!
- (27)STM32——光敏传感器实验笔记
- 干细胞技术是不是骗局
- 珠海:IT应用向政府投资行业集中
- 一站解决:如何用cd-hit去低于30%的冗余(资源见百度云链接)
- XX is not defined import impor了还是not defined ant design组件import还是not defined