在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
