Jmeter之正則表示式提取器
作用:可以從請求的響應結果中取到需要的內容,從而實現關聯。
Jmeter正則表示式提取器控制面板,截圖如下:
位置1:名稱及註釋
位置2:正則表示式提取內容的範圍。(關於各欄位的詳細說明請查閱協議的相關說明)
位置3:正則表示式提取的相關設定
引用名稱:其他地方引用提取值的變數名稱,如填寫的是:str,具體的引用方式是${str}
正則表示式:提取內容的正則表示式【稍注意一下:()表示提取,對於你要提前的內容需要用小括號括起來】
模板:用$$引用起來,如果在正則表示式中有多個正則表示式(多個括號括起來的東東),則可以是$1$, $2$,$3$等等,
表示解析到的第幾個值給str
匹配數字(0代表隨機):0代表隨機,-1代表所有,其餘正整數代表將在堅持的內容中,第幾個匹配的內容提取出來。
預設值:正則匹配失敗時,取的值
詳解Jmeter 正則表示式
術語理解:
包含(Contains)意味著正則表示式至少部分匹配目標。例如:”alphabet”包含”ph.b”;
匹配(Matches)意味著正則表示式完全匹配目標,例如:”alphabet”匹配“al.*t“;
在這一情況下,它等同於使用^和$封裝正則表示式,即“^al.t$”。但是事情並不總是這樣
Eg:正則表示式”alp.lp.*”包含於”alphabet”,但並不匹配”alphabet”;
原因在於當範本匹配器在”alphabet”中找到序列”alp”後,就會停止嘗試其他組合,
而且”alp”不同於”alphabet”,它不包含”habet“
例項
1).提取單個字串
期望匹配web頁面的如下部分:
Name=”file” value=”readme.txt”> 並提取readme.txt
符合要求的正則表示式:name=“file”value=”(.+?)” >
上面用到的特殊字元包括如下幾個:
( ):封裝了待返回的匹配字串;
.:匹配任何字元
+:一次或多次
?:在找到第一個匹配項後停止
若沒有?在找到第一個>後,會繼續尋找,直到最後一個”>”;
優化,提高效率:name=”file” value=”([^”]+)”>,其中[^”]意味著匹配任何東西,除了”,
此種情況下,匹配引擎在找到第一個右側”後,就會停止搜尋
而上面例子中的匹配引擎會去尋找”>
2). 提取多個字串
期望匹配web頁面的如下部分:
Name=”file” value=”readme.txt”> 並提取file.name和readme.txt
符合要求的正則表示式:name=”([^”]+)” value=”([^”]+)”
這會建立兩個組合,並可用於jmeter正則表示式模版,形如$1$$2S
3).關鍵字
() : 組合
[ ] :字元集合
{} :重複
+? :重複
*:任意匹配字元
\ :轉義字元
|-:選擇符
^$:字串或行的起始和結尾