在jmeter里正則表達式用的位置比較多。
一、正則表達式
功能是從請求的響應結果中取到需要的內容,作為下一個接口的入參從而實現關聯。正則表達式提取器可配合Debug Sampler來查看各變量取值。

要關聯這個
user_id":"10145"
說明:
簡單介紹一下Jmeter正則表達式提取器的使用方法。
1、添加Jmeter正則表達式提取器
在具體的Request下添加Jmeter正則表達式提取器(Jmeter正則表達式在“后置處理器”下面)
2、Jmeter正則表達式提取器控制面板,截圖如下:
位置1:名稱及注釋
位置2:正則表達式提取內容的范圍。(關於各字段的詳細說明請查閱協議的相關說明)
位置3:正則表達式提取的相關設置
- 引用名稱:自己定義的變量名稱,后續請求將要引用到的變量名,如填寫的是:user_id,后面的引用方式是${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":\((.+?)\),
問題2:一個表達式匹配多個參數

調用方法${list_g1} ${list_g2}
例如,假設:
引用名:RefName
正則表達式:name=”(.+?)” value=”(. + ?)”
模板:$1$$2$
以下的變量將被設置:
RefName:file.namereadme.txt
RefName_g:groups的數量(在此為2)
RefName_g0:name=”file.name” value=”readme.txt”
RefName_g1:file.name
RefName_g2: readme.txt
---------------------
作者:約會遠行
來源:CSDN
原文:https://blog.csdn.net/yue530tomtom/article/details/76571632
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
3、一種不是很常見的情況是有若干個匹配數據,使用正則表達式測試器測試的結果如下:

若希望取到17這個值,則對應的是第二列第二行($2$, ${javawd_g2}),如果是第三列第四行的數據,則對應的是($3$,${javawd_g4})
這種情況在Jmeter正則表達式提取器和HTTP請求中的設置如下:

