JMeter正則表達式提取器


1.正則表達式提取器的業務場景

如果有這樣的情況:一個完整的操作流程,需要先完成某個操作,獲得某個值或數據信息,然后才能進行下一步的操作(也就是常說的關聯/將上一個請求的響應結果作為下一個請求的參數);

如在token的請求流程中,客戶端輸入賬號與密碼登錄到服務端,服務端會返回一個tokenID給客戶端,客戶端需要進行下一步操作時需要提供tokenID給服務端 在Jmeter中,可以利用正則表達式提取器與JSON提取器來幫助我們完成這一動作。

JSON提取器之前以及分享過了,傳送門:https://www.cnblogs.com/teangtang/p/15796079.html,這里我們只演示正則表達式提取器

2.正則表達式提取器

2.1正則表達式操作符

 
         
字符 作用
$ 匹配輸入字符串的結尾位置。
() 標記一個子表達式的開始和結束位置。子表達式可以獲取供以后使用。
* 匹配前面的子表達式零次或多次。
+ 配前面的子表達式一次或多次。
. 匹配除換行符 \n 之外的任何單字符。
? 匹配前面的子表達式零次或一次,或指明一個非貪婪限定符。
|將下一個字符標記為或特殊字符、或原義字符。  
^ 匹配輸入字符串的開始位置。
\w 匹配字母、數字、下划線或漢字
{n} n 是一個非負整數。匹配確定的 n 次。
{n,} n 是一個非負整數。至少匹配n 次。
{n,m} m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。
   
貪婪匹配和非貪婪匹配  
*、+限定符都是貪婪的,因為它們會盡可能多的匹配文字,只有在它們的后面加上一個?就可以實現非貪婪或最小匹配。

 案例

例如我們要取出下面的數據
{
  "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyaWQiOiJRZVh2MlJLZFE4eVF1eWIyNFdSbVY5IiwiZXhwIjoxNjQyNTk0NTkzfQ.FCCsG4domXHZCzyb192pNJTZB-Nw2ae57IExnbpkTa8",
  "user": {
    "uid": "QeXv2RKdQ8yQuyb24WRmV9",
    "telephone": "15227132986",
    "username": "特昂糖",
    "email": null,
    "avator": "",
    "date_joined": "2022-01-09T11:12:25.772118+08:00",
    "is_active": true
  }
}
正則表達式
取到的值
"token":"(.*?)"
 
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyaWQiOiJRZVh2MlJLZFE4eVF1eWIyNFdSbVY5IiwiZXhwIjoxNjQyNTk0NTkzfQ.FCCsG4domXHZCzyb192pNJTZB-Nw2ae57IExnbpkTa8"
"uid":"(.*?)"
 
 "uid": "QeXv2RKdQ8yQuyb24WRmV9"
"telephone":"(.*?)"
 
 "telephone": "15227132986"
"date_joined":"(.*?)"
 
"date_joined": "2022-01-09T11:12:25.772118+08:00"
"username":"(.*?)"
 
"username": "特昂糖"
"email":"(.*?)"
 
"email": null
"avator":"(.*?)"
 
"avator": ""
"is_active":"(.*?)"
 
 "is_active": true

這里可以給大家分享一個正則表達式測試的地址:https://tool.oschina.net/regex

2.2模板

⽤$$引⽤起來,如果在正則表達式中有多個正則表達式(多個括號括起來的東東),則可以是$2$,
$3$等等,表示解析到的第⼏個值給user_id。例如:$1$表示匹配到的第⼀個值
$1$表示解析到的第1個值

2.3匹配數字

0代表隨機取值,-1代表所有值,此時提取結果是⼀個數組,其余正整數代表第⼏個匹配的內容提
取出來。如果匹配數字選擇的是-1,還可以通過 {user_id_2}來取第2
個匹配的內容。

2.4缺省值

如果參數沒有取得到值,那默認給一個值讓它取。可填可不填,看具體使用場景

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM