Jmeter正则表达式提取器
在jmeter里正则表达式用的位置比较多。
一、正则表达式
功能是从请求的响应结果中取到需要的内容,作为下一个接口的入参从而实现关联。正则表达式提取器可配合Debug Sampler来查看各变量取值。
要关联这个
user_id":"10145"
说明:
简单介绍一下Jmeter正则表达式提取器的使用方法。
1、添加Jmeter正则表达式提取器
在具体的Request下添加Jmeter正则表达式提取器(Jmeter正则表达式在“后置处理器”下面)
2、Jmeter正则表达式提取器控制面板,截图如下:
位置****1:名称及注释
位置****2:正则表达式提取内容的范围。(关于各字段的详细说明请查阅协议的相关说明)
位置****3:正则表达式提取的相关设置
-
- 引用名称:自己定义的变量名称,后续请求将要引用到的变量名,如填写的是:user_id,后面的引用方式是$
- 正则表达式:提取内容的正则表达式,相当于lr中的关联函数
- 【() 括起来的部分就是需要提取的,对于你要提的内容需要用小括号括起来】
- 【. 点号表示匹配任何字符串】
- 【+ 一次或多次】
- 【? 在找到第一个匹配项后停止】
- 模板:用$$引用起来,如果在正则表达式中有多个正则表达式(多个括号括起来的东东),则可以是$2$,$3$等等,表示解析到的第几个值给user_id。例如:$1$表示匹配到的第一个值
- 匹配数字:0代表随机取值,-1代表所有值,此时提取结果是一个数组,其余正整数代表第几个匹配的内容提取出来。如果匹配数字选择的是-1,还可以通过${user_id_1}的方式来取第1个匹配的内容,${user_id_2}来取第2个匹配的内容。
- 缺省值:正则匹配失败时,取的值
问题1:(.+?) 与(.*?) 区别
(.+?) 匹配一个以上
(.*?) 匹配0个及以上,要取的值是空值的时候可以取到
比如labelId":""; 要取labelId的值,使用(.+?) 匹配不到值,使用(.?) 就可以取到值为空对应写法为 labelId":"(.?) ";
如果正则中有转义怎么办?
id?labelId":"1290" 正则写法 id?labelId":"(.+?)"
labelId":"1290" 正则写法 labelId\":\"(.+?)\"
labelId":(1290), 正则写法 labelId"