jmeter自帶後置處理器:正則表達式提取器,能夠用來提取接口響應裏的信息,給予後續接口傳參用。php
例如要提取響應結果裏的token字段及sex字段(響應內容爲:

"token":"83EEAA887F1D2F1AA1CDA9E197810992","sex":0,"userName":"12548650"),提取器以下設置,

正則表達式提取器說明:
Apply to:應用範圍(通常就選擇默認的Main sample only),就算有重定向,通常也是提取最終那個請求的接口。
要檢查的響應字段:樣本數據源。
主體: 接口響應主體內容,通常要提取普通http響應結果的數據,都勾選這個。
信息頭:響應頭的全部內容。
Request Headers:請求頭的全部內容。
url:是對sample的url進行匹配,也就是查看結果樹裏請求內容的第一行url,不包含data裏的請求參數(即只能匹配protocol(協議)+host+path+querystring,如:https://www.baidu.com/index.php?tn=monline_3_dg)。
響應代碼:http響應代碼,如101,200,302,404,501等。
響應信息:http響應代碼對應的響應信息,例如:OK, Found(HTTP/1.1 200 Ok;HTTP/1.1 302 Found)。
引用名稱:其餘地方引用時的變量名稱,名稱只能是一個,引用方法:${token}。如圖

正則表達式:數據提取器,通常簡單的通用語法就是:左邊界(.*?)右邊界,左右邊界就是爲了能準肯定位到想匹配的內容,如最上面圖的"token":"(.*?)","sex":(.*?),"userName", 其中"token":"以及","sex": 和,"userName"這3個就是左右邊界,(.*?) 是替換了想要提取的內容,裏面的'?'爲非貪婪匹配,(非貪婪模式就是說在遇到第一個右邊界後就中止匹配,這樣就能夠精確拿到想要的內容)。建議均使用非貪婪匹配,除非特殊狀況。
模板:對應正則表達式提取器類型,樣式爲:$n$。若模板爲:$0$,則爲整個表達式匹配到的內容,就是包括小括號內跟小括號外的內容,即("token":"83EEAA887F1D2F1AA1CDA9E197810992","sex":0,"userName")。若模板爲:$1$,則對應正則表達式中的第一個(.*?)所匹配的內容,即(83EEAA887F1D2F1AA1CDA9E197810992) ,若模板爲:$2$,則對應正則表達式中的第二個(.*?)所匹配的內容,即(0),若模板爲$1$$2$,則把2個(.*?)所匹配的內容拼接起來,即(83EEAA887F1D2F1AA1CDA9E1978109920)。模板是能夠自由組合的,後續案例中再介紹。
匹配數字:正則表達式匹配數據的最終結果能夠看作一個數組,匹配數字便可看作是數組的第幾個元素。當爲 0 時,隨機返回匹配的數據。當爲 1 時,表示返回匹配結果數組的第一個元素。當爲負數(-1,-2,-100均可以)時,表示返回所有元素,而且同時會返回一個元素總數的變量token_matchNr,在引用時:經過${token_1}的方式來取第1個匹配的內容,${token_2}來取第2個匹配的內容。
缺省值:匹配失敗時的默認值。一般用於後續的邏輯判斷,建議使用一些特殊含義的,好比0,NULL,ERROR等。
正則測試:
能夠直接在察看結果樹裏選擇Regexp正則測試模式來測試正則是否寫的正確。

正則結果查看:
如何查看提取到了想要的內容呢,這裏就須要提到另一個後置處理器:Debug PostProcessor
該元件就爲調試所用,通常用於查看變量值,添加方法同正則表達式提取器。
