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

Jmeter--正則表示式提取器

正則提取器的一般使用場景是, 在我第二個請求引數中需要加入第一個請求的返回值, 此時通過正則提取器可以提取第一個請求返回值中指定的欄位資訊並賦值, 在第二個請求引數中直接引用該變數即可

jmeter的正則提取器截圖如下:

 

這裡寫圖片描述
簡單介紹下其中幾個比較重要的欄位的資訊, 如下表

 接下來看下實際的使用,

 


如圖所示, 取登入後返回的ticket值, 此時因為方便說明, 使用"(.*?)"來獲取返回值中雙引號之間的內容:
這裡寫圖片描述
新增debug元件, 展示debug資訊如下,
這裡寫圖片描述
此時, ${ticket}表示取的是第一列的值, 第一列是由模板上的$1$確定的,
此時Match No設定為-1 ,表示會返回所有匹配值陣列的元素, 可以看到返回有三個元素分別為${ticket_1},${ticket_2},${ticket_3} 此時, 若有多行資料, 且模板處設定的為$1$, 如果選擇第一個陣列元素, 則:
• ${ticket_1_g0}取的都是第一個匹配值的第一列全部的資料
• ${ticket_1_g1}取的是第一個匹配值的第一列第一行的資料,
• ${ticket_1_g2}取的是第一個匹配值的第一列第二行的資料,
* ${ticket_2_g1}取的是第二個匹配值的第一列第一行的資料,

再來看一個比較簡單的正則, 如下, 只取匹配值中的第一個元素:
這裡寫圖片描述
這裡寫圖片描述
Match No設定為1 , 表示只會選擇返回的匹配值陣列當中的第一個元素, 直接使用${ticket}表示即可, 此時, 若有多行資料, 且模板處設定的為$1$, 則:
• ${ticket_g0}取的都是第一列全部的資料
• ${ticket_g1}取的是第一列第一行的資料,
• ${ticket_g2}取的是第一列第二行的資料,
---------------------
Jmeter中關聯可以在需要獲取資料的請求上 右鍵-->後置處理器 選擇需要的關聯方式,如下圖有很多種方法可以提取動態變化資料:  

  

 

二、正則表示式提取器:

   1、比如需要提取如下響應文字中的 “<title>百度一下,你就知道</title>” 裡面的 “百度一下,你就知道”:

  

  2、設定正則表示式提取器:

  

   說明:

  (1)引用名稱:下一個請求要引用的引數名稱,如填寫title,則可用${title}引用它。

  (2)正則表示式:

    ():括起來的部分就是要提取的。

    .:匹配任何字串。     +:一次或多次。     ?:不要太貪婪,在找到第一個匹配項後停止。

  (3)模板:用$$引用起來,如果在正則表示式中有多個正則表示式,則可以是$2$$3$等等,表示解析到的第幾個值給title。如:$1$表示解析到的第1個值

  (4)匹配數字:0代表隨機取值,1代表全部取值,通常情況下填0

  (5)預設值:如果引數沒有取得到值,那預設給一個值讓它取。

 

  3、使用2中獲取到的值:

  

 

三、關於正則表示式的舉例說明:

  1、提取單個字串:
    假如想匹配Web頁面的如下部分:name = "file" value = "readme.txt">並提取readme.txt。一個合適的正則表示式:name = "file" value = "(.+?)">。
      ():封裝了待返回的匹配字串。
      .:匹配任何單個字串。
      +:一次或多次。
      ?:不要太貪婪,在找到第一個匹配項後停止。

  2、提取多個字串:
    假如想匹配Web頁面的如下部分:name = "file.name" value = "readme.txt">並提取file.name和readme.txt。一個合適的正則表示式:name = "(.+?)" value = "(.+?)"。這樣就會建立2個組,分別用於$1$和$2$

  比如:

    引用名稱:MYREF
    模板:$1$$2$

   如下變數的值將會被設定:
    MYREF:     file.namereadme.txt
    MYREF_g0:   name = "file.name"value = "readme.txt"
    MYREF_g1:  file.name
    MYREF_g2:  readme.txt

  在需要引用地方可以通過:${MYREF}, ${MYREF_g1進行使用。

 

Java正則表示式方法

這裡就不對Java正則表示式的使用做基礎學習了,下面列出了我們在進行“關聯”操作時,需要掌握的基本元字元: 
( ) :將 () 之間括起來的表示式定義為“組”(group),並且將匹配這個表示式的字元儲存到一個臨時區域,我們主要就是利用這個元字元配合所指定的字串匹配規則來進行匹配資訊的提取; 
.+: 一個以上的任意字元,通過Greediness(貪婪型)匹配策略進行表示式模板的匹配(最大匹配); 
.+?:通過?元字元表示一個非貪婪模式匹配,即通過 Reluctant(勉強型)匹配策略進行表示式模板的匹配(最小匹配); 
另外,還包括.*,.*?,\d,\D,\w,\W等。

 

參考:https://www.cnblogs.com/LiangHu/p/6230372.html