1. <i id="s6b2k"><small id="s6b2k"></small></i>
    <b id="s6b2k"><bdo id="s6b2k"></bdo></b>
  2. <wbr id="s6b2k"></wbr>

    jmeter-正則表達式實例講解_正則表達式

    來源:腳本之家  責任編輯:小易  

    過年前產假歸來,jmeter很多知識生疏了,這兩天打開jmeter摸索了幾下,老了記不住,還是準備弄個jmeter系列隨筆吧。

    言歸正傳,使用jmeter時經常有這樣的情況:一個完整的操作流程,需先完成某個操作,獲得某個值或數據信息,然后才能進行下一步的操作(也就是常說的關聯/將上一個請求的響應結果作為下一個請求的參數); 在jmeter中,利用正則表達式提取器來輕松幫助我們完成這一動作。正則表達式就是用于描述這些規則的工具。換句話說,正則表達式就是記錄文本規則的代碼。學習正則表達式最好就是從實例下手。下面讓我們進入實例。

    實例1:從JDBC查詢數據,并提取查詢結果

    1、新建線程組并把相關jar放到/lib或/lib/ext目錄、添加JDBC Connection Configuration等,此處省略,直接附上截圖

    2、添加JDBC Request,Query Type=Select Statement,Varibale name=MySQL。建議在數據庫工具執行一次后,在后面察看結果樹時做對比,檢查是否提取正確。

    3、在JDBC Request下創建正則表達式提取器,在JDBC Request元件下右擊【添加】-【后置處理器】-【正則表達式提取器】即可。本例子查詢兩列,所以需創建兩個正則表達式提取器

    4、配置提取第一列字段,

    Apply to通常是Main sample only,

    要檢查的響應字段視情況選擇,在此例選【主體】,

    引用名稱填id,即下一個請求要引用的參數名稱,使用格式${id},注意引用名稱命名不要跟線程組內其他變量名稱重復

    正則表達式,則是本文章重點,這里填([a-zA-Z0-9-]{1,}) ,

    ():括起來的部分就是要提取的。
    .:匹配任何字符串。
    +:一次或多次。
    ?:不要太貪婪,在找到第一個匹配項后停止。

    模板,選擇第一個匹配的字段,填$1$,用$$引用起來,如果在正則表達式中有多個正則表達式,則可以是$2$$3$等等,表示解析到的第幾個值給id。如:$1$表示解析到的第1個值

    匹配數字,0代表隨機取值,-1表示全部,0隨機,1第一個,2第二個,

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

    5、配置提取第二列字段

    Apply to填Main sample only,

    要檢查的響應字段選【主體】,

    引用名稱填phone,后面請求使用變量時格式${phone},

    正則表達式,填(\d{10,}) ,

    模板,選擇第一個匹配的字段,填$1$,

    匹配數字,除了0,建議填1,

    缺省值不填

    6、檢查提取器提取結果,有兩種方法校驗結果。第一種。另外一個,就是不使用請求,。

    方法1:添加Debug PostProcessor也可打印所有變量的值,添加即可,然后運行結果

    ,在察看結果樹可以看到提取變量的值是否正確

    方法2:引用到下一個請求

    實例2:從登錄響應請求頭提取JSESSIONID

    1、繼續在實例1的基礎上,描述實例2。添加HTTP請求,用于登錄

    運行一次,在察看結果樹看到取樣器結果有Set-Cookie: JSESSIONID。

    2、在登錄HTTP請求元件下右擊【添加】-【后置處理器】-【正則表達式提取器】即可。正則表達式填寫:(?<=Set-Cookie: JSESSIONID=)\w+\b

    3、在線程組內部站點下創建HTTP Cookie管理器,并引用正則表達式提取的引用變量JSESSIONIDw。格式為${JSESSIONIDw}

    4、運行一次,在察看結果樹其他需要登錄才能請求的請求檢查

    實例3(簡單):提取單個字符串

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

    實例4(簡單):提取多個字符串

    例匹配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}進行使用

    實例5(簡單):找到所有小數的數字,比如10.2

    引用名稱:aa

    正則表達式:([0-9]+\.[0-9]+)

    模板:$0$區配數字:-1調用:

    ${aa_1}:取出第一個滿足要求的數字

    ${aa_2}:取出第二個滿足要求的數字

    實例6(簡單):找到所有小數點后的數字

    引用名稱:aa

    正則表達式:([0-9]+)\.([0-9]+),必須用括號分組

    模板:$2$(第二組)

    區配數字:-1取出所有符合要求的調用:

    ${aa_1}:取出第一個滿足要求的數字

    ${aa_2}:取出第二個滿足要求的數字

    實例7(簡單):找到第一個有小數的數字

    引用名稱:aa

    正則表達式:([0-9]+)\.([0-9]+),必須用括號分組

    模板:不寫可以,也可以$2$$1$

    區配數字:1(第一個)調用:

    ${aa_g1}:取出滿足要求的第一組數字

    ${aa_g2}:取出滿足要求的第二組數字

    實例8(簡單):找到所有小數的數字

    引用名稱:aa

    正則表達式:([0-9]+)\.([0-9]+),必須用括號分組

    模板:不寫可以,也可以$2$$1$

    區配數字:-1取出所有符合要求的調用:

    ${aa_1_g1}:取出第一個滿足要求的第一組數字

    ${aa_1_g2}:取出第一個滿足要求的第二組數字

    ${aa_2_g1}:取出第一個滿足要求的第一組數字

    ${aa_2_g2}:取出第一個滿足要求的第二組數字

    如何檢查正則表達式

    工具使用Regester檢查編寫的正則表達式是否正確。可訪問deerchao.net下載

    jmeter正則表達式提取器參數說明

    后置處理器:在請求結束或者返回響應結果時發揮作用。

    正則表達式提取器:允許用戶從服務器的響應中通過使用perl的正則表達式提取值。該元素會作用在指定范圍取樣器,用正則表達式提取所需值,生成模板字符串,并將結果存儲到給定的變量名中。

    APPly to:作用范圍(返回內容的斷言范圍)

    Main sample and sub-samples:作用于父節點的取樣器及對應子節點的取樣器

    Main sample only:僅作用于父節點的取樣器

    Sub-samples only:僅作用于子節點的取樣器

    JMeter Variable:作用于jmeter變量(輸入框內可輸入jmeter的變量名稱)

    要檢查的響應字段ResponseFieldtocheck:需檢查的響應報文的范圍

    Body:主體,響應報文的主體,一個網頁頁面的內容,除了信息頭以外的內容

    Body(unescaped):主體,響應的主體內容且替換了所有的html轉義符,注意html轉義符處理時不考慮上下文,因此可能有不正確的轉換,不太建議使用

    BodyasaDocument:從不同類型的文件中提取文本,注意這個選項比較影響性能

    Response Headers:響應信息頭

    Request Headers:請求信息頭

    URL:統一資源定位符,即Internet上用來描述信息資源的字符串

    Response Code:響應狀態碼,比如200、404等

    Response Message:響應信息

    引用名稱(ReferenceName):Jmeter變量的名稱,存儲提取的結果;即下個請求需要引用的值、字段、變量名。每個存儲組需要使用共結果時,應使用:[refname]_g#,其中[refname]是你輸入的名字,#是組號,0是整個匹配結果,而1是指第一組匹配值

    引用方法:${引用名稱}

    正則表達式(RegularExpression):使用正則表達式解析響應結果,“()”表示提取字符串中的部分值,請不要使用“||”,除非你需要匹配這字符。

    下面是常用的正則表達式操作符:

    模板(Template):從匹配的結果中創建一個字符串,這是通過正則表達式匹配出來的一組值,意為使用提取到的第幾個值(可能有多個值匹配,因此使用模板);從1開始匹配,以此類推。

    通過正則表達式匹配出來的一組值,語法為:$1$指代第一組,$2$指代第二組,$0$指代整個匹配結果

    參數可以在取值模板組合使用,例如:“11-22”作為模板得到的值是使用“-”連接的第一個待匹配內容與第二個待匹配內容組合而成的字符串。

    匹配數字(MatchNo):正則表達式匹配數據的結果可以看做一個數組,表示如何取值:0代表隨機取值,正數n則表示取第n個值(比如1代表取第一個值),負數則表示提取所有符合條件的值。一般與ForEach控制器配合使用。

    缺省值(DefaultValue):匹配不到數據時,引用變量返回一個默認值,在調試中此功能很有用,如果沒有設置默認值,那么很難分辨出正則表達式是否有匹配到數據或使用是否正確,當然也可據測試需求,在調試完成后去掉默認值的設置。通常用于后續的邏輯判斷,一般通常為特定含義的英文大寫組合,比如:ERROR

    正則表達式語法

    1\bhi\b : 匹配只有hi的字符,\b代表的位置,第一個\b代表單詞開始的位置,第二個\b代表單詞結束的位置2\bhi\b.*\bthis\b : 匹配hi的字符后,中間有任意個字符后,后面是this的字符3 . : 表示任意字符的元字符,例如Perl正則表達式,r.t匹配這些字符串:rat、rut、rt,但是不匹配root4 *:表示任意數量的元字符,代表的不是字符,也不是位置,而是數量。匹配0或多個正好在它之前的那個字符。例如Perl正則表達式.*意味著能夠匹配任意數量的任何字符5 \d : 表示任意一個數字[0-9]6\d+: 匹配一個或更多連續的數字。這里的+是和*類似的元字符,不同的是*匹配重復任意次(可能是0次),而+則匹配重復1次或更多次。7\D: 匹配任意非數字的字符[^0-9] \w:8 \d{2}: 表示任意一個數字出現兩次,相當于\d\d9 \s : 匹配任意的空白符,包括空格,換行符,制表符(tab),中文全角空格。即空白 [ \r\t\n\f]10\S: 匹配任意不是空白符的字符。即非空白 [^ \r\t\n\f]11\w : 匹配字母,數字,下劃線或漢字。即任意單詞字符 [_0-9a-zA-Z]12\W: 匹配任意不是字母,數字,下劃線,漢字的字符。即任意非單詞字符 [^_0-9a-zA-Z]13\b\w{2}\b : 匹配剛好有兩個字符的單詞14\b : 匹配單詞的開始和結束15^ : 匹配字符串的開始。例如Perl正則表達式^Whenin能夠匹配字符串"Wheninthecourseofhumanevents"的開始,但是不能匹配"WhatandWheninthe"16$ : 匹配字符串的結束, 例: ^\d{2,5}$ 表示輸入的數字必須是2位(包含)到5位(包含)之間;

    例如Perl正則表達式weasel$能夠匹配字符串"He'saweasel"的末尾,但是不能匹配字符串"Theyareabunchofweasels."

    17\ : 轉義字符,如果要查找元字符就需要用轉義字符來完成,比如: deerchao\.net 實際上是deerchao.net。

    用來將這里列出的這些元字符當作普通的字符來進行匹配。例如Perl正則表達式\$被用來匹配美元符號,而不是行尾,類似的,Perl正則表達式\.用來匹配點字符,而不是任何字符的通配符

    18 重復次數說明: *是重復0次或多次,+是重復1次或多次,?是重復零次或一次,{n} 是重復n次,{n,}是重復n次到多次,{n,m}是重復n次到m次19[]、[c1-c2]、[^c1-c2]: 括號里的字符會被匹配,比如[ab]匹配a或b字符,[,?]匹配逗號或問號

    例如Perl正則表達式r[aou]t匹配rat、rot和rut,但是不匹配ret。

    可以在括號中使用連字符-來指定字符的區間,例如Perl正則表達式[0-9]可以匹配任何數字字符;

    還可以制定多個區間,例如Perl正則表達式[A-Za-z]可以匹配任何大小寫字母。

    另一個重要的用法是“排除”,要想匹配除了指定區間之外的字符——也就是所謂的補集——在左邊的括號和第一個字符之間使用^字符,例如Perl正則表達式[^269A-Z]將匹配除了2、6、9和所有大寫字母之外的任何字符

    20 [a-z0-9A-Z] : 相當于匹配\w
     
    21 | : 匹配或規則,將兩個匹配條件進行邏輯“或”(Or)運算。比如: \(0\d{2}\)[- ]?\d{8}|\(0\d{3}\)[- ]\d{7}|0\d{2}[- ]?\d{8}|0\d{3}[- ]?\d{7} 這個就是匹配電話號碼的,如:012-56236562, 0536-1234567,(0536)-1234567,01212345678
    例如Perl正則表達式(him|her)匹配"itbelongstohim"和"itbelongstoher",但是不能匹配"itbelongstothem."。注意:這個元字符不是所有的軟件都支持的
     
    22 ():匹配分組,255.134.123.123 或 193.168.1.1 匹配表達式為:(([01]?\d\d?|25[0-5]|2[0-4]\d)\.){3}([01]?\d\d?|25[0-5]|2[0-4]\d)
     
    23 \B : 匹配不是單詞開頭或結尾的位置
     
    24 + :匹配1或多個正好在它之前的那個字符。例如Perl正則表達式9+匹配9、99、999、98、93dsf、9.....等。注意:這個元字符不是所有的軟件都支持的
     
    25 ? :匹配0或1個正好在它之前的那個字符。注意:這個元字符不是所有的軟件都支持的
     
    26 [^x] : 匹配除了x以外的任意字符
     
    27 [^aeiou] : 匹配除了aeiou以外的任意字符
     
    28 (?<word>\w+) 或(?'word'\w+) 后向引用,用于重復搜索前面某個分組已經匹配的文本,引用時就可以寫成\k<word>。實際上分組0對應整個正則表達式;組號分配過程是從左到右分配兩遍的,第一遍先掃描未命名的分組,第二遍掃描已命名的分組,所以命名分組的組號永遠大于未命名分組的組號的; 可以用(?:exp)來剝奪組號分配的參與權
     
    29 分組命名的幾種語法: (exp) 匹配exp表達式并將文本匹配的內容自動分配到分組里;
    (?<name> exp)匹配exp表達式里的文本內容到name組名下,也可以寫成(?'name'exp); (?:exp)匹配exp表達式里內容,但是不捕獲匹配的文本也不給匹配的文本分配組號;(?=exp)匹配exp前面的位置; (?<=exp)匹配exp后面的位置 ; (?!exp)匹配后面不是exp的位置 ; (?<!exp) 匹配前面不是exp的位置; (?#comment)添加注釋,對正則表達式沒有任何影響;
     
    30 (?=exp)與(?<=exp)為零寬斷言,其中(?=exp)為零寬度正預測先行斷言,(?<=exp)為零寬度正回顧后發斷言。(?=exp)表示自exp斷言表達式出現的位置開始匹配斷言之前的內容,如\b\w+(?=er\b) 源文件為tester,則匹配結果為:test。(?<=exp)表示自exp斷言表達式內容結束后的位置開始匹配后面的內容,如(?<=test)\w+\b 源文件為test, 則匹配結果為:er。
     
    31 {i}、{i,}、{i,j}:匹配指定數目的字符,這些字符是在它之前的表達式定義的。例如Perl正則表達式A[0-9]\{3\}能夠匹配字符"A"后面跟著正好3個數字字符的串,例如A123、A348等,但是不匹配A1234。Perl正則表達式[0-9]\{4,\}匹配連續的任意4個或4個以上數字字符。Perl正則表達式[0-9]\{4,6\}匹配連續的任意4個、5個或者6個數字字符。注意: 這個元字符不是所有的軟件都支持的
     
    32 \ba\w*\b:匹配以字母a開頭的單詞——先是某個單詞開始處(\b),然后是字母a,然后是任意數量的字母或數字(\w*),最后是單詞結束處(\b)
     
    更多語法詳情可以訪問http://deerchao.net/tutorials/regex/regex.htm

    到此這篇關于jmeter-正則表達式實例講解的文章就介紹到這了,更多相關jmeter正則表達式內容請搜索真格學網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持真格學網!

    您可能感興趣的文章:Jmeter正則表達式提取器實現過程圖解jmeter設置全局變量與正則表達式提取器過程圖解

  3. 本文相關:
  4. 正則表達式全局匹配模式(g修飾符)
  5. javascript 正則表達式驗證函數代碼
  6. 正則表達式判斷所填入號碼的運營商js代碼修改版
  7. java正則表達式基礎入門知識
  8. extjs4的文本框(textfield)使用正則表達式進行驗證(regex)的方法
  9. 正則表達式惰性匹配模式(?)
  10. 半小時精通正則表達式 經典實例介紹
  11. 精通js正則表達式(推薦)
  12. linux中基本正則表達式
  13. 談談我對正則表達式的認識
  14. Jmeter 如何同時發送參數和xml內容請求鏈接
  15. 怎樣開始入門學習軟件測試
  16. jmeter 參數為字符串怎么設
  17. 怎樣正確做 Web 應用的壓力測試
  18. 怎樣正確做 Web 應用的壓力測試
  19. 怎樣正確做 Web 應用的壓力測試
  20. 剛租來的服務器如何測試性能?百度知道
  21. 怎么使用jmeter對http協議接口測試
  22. 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全javascriptasp.netphp編程ajax相關正則表達式asp編程jsp編程編程10000問css/htmlflex腳本加解密web2.0xml/rss網頁編輯器相關技巧安全相關網頁播放器其它綜合dart首頁jmeter正則表達式提取器實現過程圖解jmeter設置全局變量與正則表達式提取器過程圖解正則表達式全局匹配模式(g修飾符)javascript 正則表達式驗證函數代碼正則表達式判斷所填入號碼的運營商js代碼修改版java正則表達式基礎入門知識extjs4的文本框(textfield)使用正則表達式進行驗證(regex)的方法正則表達式惰性匹配模式(?)半小時精通正則表達式 經典實例介紹精通js正則表達式(推薦)linux中基本正則表達式談談我對正則表達式的認識java 正則表達式詳解正則表達式匹配任意字符(包括換最新手機號碼、電話號碼正則表達比較正宗的驗證郵箱的正則表達式javascript 手機號碼正則表達式驗正則表達式匹配不包含某些字符串js利用正則配合replace替換指定字正則中需要轉義的特殊字符小結js正則函數match、exec、test、s匹配中文漢字的正則表達式介紹解決正則表達式\w和\d的疑惑淺談正則表達式(regular expression)asp正則過濾重復字符串的代碼最全的常用正則表達式大全又一不錯的應用-正則來查找替換字符串js:正則處理超文本流詳解表單驗證正則表達式實例(推薦)extjs正則表達式使用說明python中使用正則表達式將所有符合條件的正則表達式號碼靚號類型判斷代碼
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.yu113.com All Rights Reserved
    战天txt全集下载