您的位置 首页 > 数码极客

jmeter正则表达式

导读

在jmeter中,正则表达式提取器是经常用到的,其实也比较简单,总之我比较喜欢用这个,也没遇到过提取不到的问题,但是正则却坑了不少测试人员。


01、一个正则提取问题


前几天,有朋友咨询这样一个问题:服务器返回:name="tom" value="jerry" ,要提取出name的值和value的值。


其实,我觉得这个需求是不明确的,到底是name和value提取出来拼接为一个字符串呢?还是分别保存name和value的值?我在群里问这位提问的群友,没答复,其实我都想忽略这个问题了,但是觉得这还是比较重要且基础的一个知识点。


既然我说简单,那就一起跟着我的思路来操作一遍吧,我也当回顾练手了。前提是需要安装jmeter,参考:


02、安装Dummy插件


这个插件可以模拟服务器返回,相当于一个mockserver了。


首先安装Dummy,选项--插件管理--可选插件--Dummy Sampler。


勾选后,点击右下方开始安装,安装完成后会自动重启jmeter。


03、模拟响应


添加线程组,在线程组下添加Dummy取样器(在Dummy取样器的响应数据中填入模拟返回数据)、查看结果树监听器,在Dummy下添加正则表达式提取器、调试后置处理程序(用于查看提取结果的)。


04、正则基础


参考:


. 匹配除“\r\n”之外的任何单个字符。要匹配包括“\r\n”在内的任何字符,请使用像“[\s\S]”的模式。


* 匹配前面的子表达式(也可以是一个字符)任意次。例如,zo*能匹配“z”,也能匹配“zo”以及“zoo”。*等价于o{0,}。


+ 匹配前面的子表达式一次或多次(大于等于1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。


? 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”中的“do”。?等价于{0,1}。


组合:


.*具有贪婪的性质,匹配到不能匹配为止,最大匹配原则。


+或*后跟?表示非贪婪匹配,即尽可能少的匹配,最小匹配原则。


.*? 表示在能匹配成功的前提下尽可能少的匹配,最小匹配原则。


05、name和value提取为一个字符串


字符串保存到name_value


运行结果


也可以用其它字符拼接,比如-,即如果模板写为:$1$-$2$,结果就是:name_value=tom-jerry,如果要分别保存,就需要beanshell处理这个字符串了(这里不做演示,需要脚本的朋友可以后台回复“微信”联系获取),也可以用下面的简单方式。


06、name和value分别保存


name


value


运行结果

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“jmeter正则表达式”边界阅读