在jmeter里正则表达式用的位置比较多。
一、正则表达式
功能是从请求的响应结果中取到需要的内容,作为下一个接口的入参从而实现关联。正则表达式提取器可配合Debug Sampler来查看各变量取值。

对应session位于信息头,格式类似于 Set-Cookie:JSESSION=1SEDEGGDFJSDKFJASDLKGJAD;
引用名称:下一个请求要引用的参数名称,如填写session,则可用${session}引用它。
正则表达式:
():括起来的部分就是要提取的。()括号里表示要的数值,(相当于LR左边界, )相当于LR的右边界
.:匹配任何字符串。
+:一次或多次。
?:不要太贪婪,在找到第一个匹配项后停止。
模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$$3$等等,表示解析到的第几个值给引用名称。$0$表示随机取值,$1$表示取第1个值,$2$表示取第2个值,$n$表示取第n个值,$1$$2$表示取第1第2共2个值;
匹配数字:-1表示全部取值,0表示随机取值,1表示取值第一个,2表示取值第2个。。。
缺省值:没取到值时,默认用这个。
问题1:(.+?) 与(.*?) 区别
(.+?) 匹配一个以上
(.*?) 匹配0个及以上,要取的值是空值的时候可以取到
比如labelId":""; 要取labelId的值,使用(.+?) 匹配不到值,使用(.*?) 就可以取到值为空对应写法为 labelId":"(.*?) ";
如果正则中有转义怎么办?
id?labelId":"1290" 正则写法 id\?labelId":"(.+?)"
labelId\":\"1290\" 正则写法 labelId\\":\\"(.+?)\\"
labelId":(1290), 正则写法 labelId":\((.+?)\),
问题2:提取固定位置变量

把全部值(-1)取出来,然后取其中第二个值(id_1)
问题3:一个表达式匹配多个参数

调用方法${list_g1} ${list_g2}
- 表达式:name="(.+?)" value="(.+?)"
- 模板:$1$$2$
- MYREF: file.namereadme.txt
- MYREF_g0: name="file.name" value="readme.txt"
- MYREF_g1: file.name
- MYREF_g2: readme.txt
二、自带录制时
http代理服务器时,选择包含模式、不包含模式。
只包含指定的地址的请求,如只www.test.com 对应 .+(test\.com).+ ,ip:8080/mcp-manage/ 对应 .+(8080/mcp).+
不包含图片,如
三、网上看到的一些示例
例1: <input type="hidden" name="hidName" value="(.*)"> // 提取HTML中隐藏域的值
例2:^(.*)$ // 提取整个response返回
例3:<input value="(.+?)".*\n.*My Label // 提取My Label关联的input的值
<input value="radio43" type="radio" name="myradio" id="long_nested_path"/>
<label for="long_nested_path">My Label</label>
例4:"(.+:create:.+?)" // 提取下面link的href的值
<a href="?wicket:interface=:4:create::ILinkListener:">
测试正则表达式的工具:RegexTester
