欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jmeter正則表達式實例詳解

 更新時間:2021年12月17日 14:27:53   作者:優(yōu)雅de宇  
正則表達式就是記錄文本規(guī)則的代碼。學習正則表達式最好就是從實例下手。下面我們通過實例代碼給大家介紹jmeter正則表達式的相關知識,感興趣的朋友一起看看吧

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

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

實例1:從JDBC查詢數(shù)據(jù),并提取查詢結果

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

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

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

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

Apply to通常是Main sample only,

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

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

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

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

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

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

5、配置提取第二列字段

Apply to填Main sample only,

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

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

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

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

匹配數(shù)字,除了0,建議填1,

缺省值不填

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

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

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

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

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

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

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

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

3、在線程組內(nèi)部站點下創(chuàng)建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 = "(.+?)"。這樣就會創(chuàng)建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(簡單):找到所有小數(shù)的數(shù)字,比如10.2

引用名稱:aa

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

模板:$0$區(qū)配數(shù)字:-1調(diào)用:

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

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

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

引用名稱:aa

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

模板:$2$(第二組)

區(qū)配數(shù)字:-1取出所有符合要求的調(diào)用:

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

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

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

引用名稱:aa

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

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

區(qū)配數(shù)字:1(第一個)調(diào)用:

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

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


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

引用名稱:aa

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

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

區(qū)配數(shù)字:-1取出所有符合要求的調(diào)用:

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

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

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

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

如何檢查正則表達式

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

jmeter正則表達式提取器參數(shù)說明

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

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

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

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

Main sample only:僅作用于父節(jié)點的取樣器

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

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

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

Body:主體,響應報文的主體,一個網(wǎng)頁頁面的內(nèi)容,除了信息頭以外的內(nèi)容

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

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

Response Headers:響應信息頭

Request Headers:請求信息頭

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

Response Code:響應狀態(tài)碼,比如200、404等

Response Message:響應信息

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

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

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

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

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

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

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

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

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

正則表達式語法

1\bhi\b : 匹配只有hi的字符,\b代表的位置,第一個\b代表單詞開始的位置,第二個\b代表單詞結束的位置
2\bhi\b.*\bthis\b : 匹配hi的字符后,中間有任意個字符后,后面是this的字符
3 . : 表示任意字符的元字符,例如Perl正則表達式,r.t匹配這些字符串:rat、rut、rt,但是不匹配root
4 *:表示任意數(shù)量的元字符,代表的不是字符,也不是位置,而是數(shù)量。匹配0或多個正好在它之前的那個字符。例如Perl正則表達式.*意味著能夠匹配任意數(shù)量的任何字符
5 \d : 表示任意一個數(shù)字[0-9]
6 \d+ : 匹配一個或更多連續(xù)的數(shù)字。這里的+是和*類似的元字符,不同的是*匹配重復任意次(可能是0次),而+則匹配重復1次或更多次。
7 \D : 匹配任意非數(shù)字的字符 [^0-9]? \w:
8 \d{2}: 表示任意一個數(shù)字出現(xiàn)兩次,相當于\d\d
9 \s : 匹配任意的空白符,包括空格,換行符,制表符(tab),中文全角空格。即空白 [ \r\t\n\f]?
10 \S : 匹配任意不是空白符的字符。即非空白 [^ \r\t\n\f]?
11 \w : 匹配字母,數(shù)字,下劃線或漢字。即任意單詞字符 [_0-9a-zA-Z]?
12 \W : 匹配任意不是字母,數(shù)字,下劃線,漢字的字符。即任意非單詞字符 [^_0-9a-zA-Z]
13 \b\w{2}\b : 匹配剛好有兩個字符的單詞
14 \b : 匹配單詞的開始和結束
15 ^ : 匹配字符串的開始。例如Perl正則表達式^Whenin能夠匹配字符串"Wheninthecourseofhumanevents"的開始,但是不能匹配"WhatandWheninthe"?
16 $ : 匹配字符串的結束, 例: ^\d{2,5}$ 表示輸入的數(shù)字必須是2位(包含)到5位(包含)之間;
例如Perl正則表達式weasel$能夠匹配字符串"He'saweasel"的末尾,但是不能匹配字符串"Theyareabunchofweasels."
17 \ : 轉義字符,如果要查找元字符就需要用轉義字符來完成,比如: deerchao\.net 實際上是deerchao.net。
用來將這里列出的這些元字符當作普通的字符來進行匹配。例如Perl正則表達式\$被用來匹配美元符號,而不是行尾,類似的,Perl正則表達式\.用來匹配點字符,而不是任何字符的通配符
18 重復次數(shù)說明: *是重復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。
可以在括號中使用連字符-來指定字符的區(qū)間,例如Perl正則表達式[0-9]可以匹配任何數(shù)字字符;
還可以制定多個區(qū)間,例如Perl正則表達式[A-Za-z]可以匹配任何大小寫字母。
另一個重要的用法是“排除”,要想匹配除了指定區(qū)間之外的字符——也就是所謂的補集——在左邊的括號和第一個字符之間使用^字符,例如Perl正則表達式[^269A-Z]將匹配除了2、6、9和所有大寫字母之外的任何字符
20 [a-z0-9A-Z] : 相當于匹配\w
21 | : 匹配或規(guī)則,將兩個匹配條件進行邏輯“或”(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+) 后向引用,用于重復搜索前面某個分組已經(jīng)匹配的文本,引用時就可以寫成\k<word>。實際上分組0對應整個正則表達式;組號分配過程是從左到右分配兩遍的,第一遍先掃描未命名的分組,第二遍掃描已命名的分組,所以命名分組的組號永遠大于未命名分組的組號的; 可以用(?:exp)來剝奪組號分配的參與權
29 分組命名的幾種語法: (exp) 匹配exp表達式并將文本匹配的內(nèi)容自動分配到分組里;
(?<name> exp)匹配exp表達式里的文本內(nèi)容到name組名下,也可以寫成(?'name'exp); (?:exp)匹配exp表達式里內(nèi)容,但是不捕獲匹配的文本也不給匹配的文本分配組號;(?=exp)匹配exp前面的位置; (?<=exp)匹配exp后面的位置 ; (?!exp)匹配后面不是exp的位置 ; (?<!exp) 匹配前面不是exp的位置; (?#comment)添加注釋,對正則表達式?jīng)]有任何影響;
30 (?=exp)與(?<=exp)為零寬斷言,其中(?=exp)為零寬度正預測先行斷言,(?<=exp)為零寬度正回顧后發(fā)斷言。(?=exp)表示自exp斷言表達式出現(xiàn)的位置開始匹配斷言之前的內(nèi)容,如\b\w+(?=er\b) 源文件為tester,則匹配結果為:test。(?<=exp)表示自exp斷言表達式內(nèi)容結束后的位置開始匹配后面的內(nèi)容,如(?<=test)\w+\b 源文件為test, 則匹配結果為:er。
31 {i}、{i,}、{i,j}:匹配指定數(shù)目的字符,這些字符是在它之前的表達式定義的。例如Perl正則表達式A[0-9]\{3\}能夠匹配字符"A"后面跟著正好3個數(shù)字字符的串,例如A123、A348等,但是不匹配A1234。Perl正則表達式[0-9]\{4,\}匹配連續(xù)的任意4個或4個以上數(shù)字字符。Perl正則表達式[0-9]\{4,6\}匹配連續(xù)的任意4個、5個或者6個數(shù)字字符。注意: 這個元字符不是所有的軟件都支持的?
32 \ba\w*\b:匹配以字母a開頭的單詞——先是某個單詞開始處(\b),然后是字母a,然后是任意數(shù)量的字母或數(shù)字(\w*),最后是單詞結束處(\b)

到此這篇關于jmeter正則表達式的文章就介紹到這了,更多相關jmeter正則表達式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 解決一個JSON反序列化問題的辦法(空字符串變?yōu)榭占?

    解決一個JSON反序列化問題的辦法(空字符串變?yōu)榭占?

    在平時的業(yè)務開發(fā)中,經(jīng)常會有拿到一串序列化后的字符串要來反序列化,下面這篇文章主要給大家介紹了如何解決一個JSON反序列化問題的相關資料,空字符串變?yōu)榭占?需要的朋友可以參考下
    2024-03-03
  • java多線程實現(xiàn)文件下載功能

    java多線程實現(xiàn)文件下載功能

    這篇文章主要介紹了java多線程實現(xiàn)文件下載功能的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 使用SpringBoot根據(jù)配置注入接口的不同實現(xiàn)類(代碼演示)

    使用SpringBoot根據(jù)配置注入接口的不同實現(xiàn)類(代碼演示)

    使用springboot開發(fā)時經(jīng)常用到@Autowired和@Resource進行依賴注入,但是當我們一個接口對應多個不同的實現(xiàn)類的時候如果不進行一下配置項目啟動時就會報錯,那么怎么根據(jù)不同的需求注入不同的類型呢,感興趣的朋友一起看看吧
    2022-06-06
  • 淺談hibernate中對象的3種狀態(tài)_瞬時態(tài)、持久態(tài)、脫管態(tài)

    淺談hibernate中對象的3種狀態(tài)_瞬時態(tài)、持久態(tài)、脫管態(tài)

    下面小編就為大家?guī)硪黄獪\談hibernate中對象的3種狀態(tài)_瞬時態(tài)、持久態(tài)、脫管態(tài)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • java實現(xiàn)三角形分形山脈

    java實現(xiàn)三角形分形山脈

    這篇文章主要為大家詳細介紹了java實現(xiàn)三角形分形山脈,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • IDEA如何加載resources文件夾下文件相對路徑

    IDEA如何加載resources文件夾下文件相對路徑

    這篇文章主要介紹了IDEA如何加載resources文件夾下文件相對路徑問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java實現(xiàn)把文件壓縮成zip文件的示例代碼

    Java實現(xiàn)把文件壓縮成zip文件的示例代碼

    這篇文章主要為大家介紹了如何通過Java語言實現(xiàn)將文件壓縮成zip文件,本文中示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • Java SpringBoot 集成 Redis詳解

    Java SpringBoot 集成 Redis詳解

    Redis 是一個由 Salvatore Sanfilippo 寫的 key-value 存儲系統(tǒng),是跨平臺的非關系型數(shù)據(jù)庫。Redis 是一個開源的使用 ANSI C 語言編寫、遵守 BSD 協(xié)議、支持網(wǎng)絡、可基于內(nèi)存、分布式、可選持久性的鍵值對(Key-Value)存儲數(shù)據(jù)庫,并提供多種語言的 API
    2021-10-10
  • 使用Java反射機制提高SpringBoot的代碼質(zhì)量和可維護性

    使用Java反射機制提高SpringBoot的代碼質(zhì)量和可維護性

    保持好的代碼質(zhì)量和遵守編碼標準是開發(fā)可維護和健壯軟件的重要方面,在本文中,我們將探討如何使用 Java 反射來提高 Spring Boot 應用程序的代碼質(zhì)量和可維護性,需要的朋友可以參考下
    2023-10-10
  • Java?Kryo,Protostuff,Hessian序列化方式對比

    Java?Kryo,Protostuff,Hessian序列化方式對比

    這篇文章主要介紹了Java?Kryo,Protostuff,Hessian序列化方式對比,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07

最新評論