1. 程式人生 > >Jmeter之正則表示式提取器

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).關鍵字

() : 組合

[ ] :字元集合

{}  :重複

+? :重複

*:任意匹配字元

\ :轉義字元

|-:選擇符

^$:字串或行的起始和結尾