正则表达式不包含某个字符串_JMeter必知必会系列(18) JMeter正则表达式提取器疑难分析...
JMeter正則表達(dá)式提取器疑難分析
前沿
JMeter正則表達(dá)式提取器的配置項中, Regular Expression, Template與 Match No.這三個配置項是比較難以理解的,本文針對這三個配置項設(shè)置進(jìn)行深入分析,以便大家能夠游刃有余的使用其功能.
1 JMeter使用的正則表達(dá)式
JMeter包含模式匹配工具Apache Jakarta ORO,對應(yīng)的jar包在JMeter安裝目錄下的liboro-2.0.8.jar.
Jakarta項目是在Apache軟件基金會營運的開放源代碼開發(fā)項目之一.開發(fā)著面向?qū)ο缶幊陶Z言Java的程序庫,框架等.其中的ORO是一組用于處理文本的Java類庫,提供了與Perl5兼容的正則表達(dá)式功能.
2 正則表達(dá)式提取器中的Regular Expression
該配置項填寫提取響應(yīng)數(shù)據(jù)的正則表達(dá)式.
JMeter匹配文本時可以選擇不分組捕獲與分組捕獲兩種方式.
2.1 不分組捕獲
當(dāng)Template配置相中填寫的是$0$時, Regular Expression配置項中可以沒有(),表示不分組,返回整個匹配項.
如圖所示:
2.2 分組捕獲
當(dāng)使用分組捕獲時,Regular Expression配置項中則必須至少包含一組(),用以捕獲一個或多個字符串.
一組()稱為一個捕獲組,并且捕獲組可以嵌套.
每個捕獲組都有一個編號與之對應(yīng),以方便引用捕獲組匹配的內(nèi)容.若有多個捕獲組,編號規(guī)則為:
按照"("從左至右出現(xiàn)的先后順序,從1開始依次遞增進(jìn)行編號: 1,2,3, ... ,n
還有一個額外編號為0的捕獲組,用于表示匹配到的整個正則表達(dá)式字符串.
比如:
正則表達(dá)式: ((d{4})-(d{2})-(d{2}))s((d{2}):(d{2}):(d{2}))
捕獲組編號: 1 2 3 4 5 6 7 8
響應(yīng)文本: Today is 2019-06-25 14:29:30,Tuesday
匹配后各捕獲組對應(yīng)的內(nèi)容如下:
g1:2019-06-25
g2:2019
g3:06
g4:25
g5:14:29:30
g6:14
g7:29
g8:30
g0:2019-06-25 14:29:30
3 正則表達(dá)式提取器中的Template
Template用以設(shè)置捕獲到的字符串以怎樣的格式保存到JMeter變量中.
可以原樣保存,也可以格式化保存,下面討論這兩種情況.
3.1 原樣保存捕獲組字符串
在此項中,可以用$1$表示引用捕獲組1中的內(nèi)容,$2$表示引用捕獲組2中的內(nèi)容, ... ,$n$表示引用捕獲組n中的內(nèi)容,$0$表示引用正則表達(dá)式匹配后的整個字符串.
3.2 格式化保存捕獲組字符串
除了使用$n$引用捕獲組的內(nèi)容外,還可以加入需要的字符,將匹配的內(nèi)容按照某種格式保存.
4 正則表達(dá)式提取器中的Match No.
當(dāng)正則表達(dá)式的捕獲組匹配到多個滿足條件的字符串時,會按照捕獲的先后順序依次對其進(jìn)行編號:1,2,3,...,n
可以使用編號來選擇需要的字符串,1表示第一個匹配的字符串,2表示第二個匹配的字符串,...,依次類推.
可以根據(jù)實際需要從中選擇某個匹配項,所有匹配項或隨機(jī)選擇某個匹配項.
4.1 選擇某個匹配項
設(shè)置Match No.為i(i=1,2,3,...,n),i不能超過匹配的最大次數(shù).
比如,設(shè)置為2,表示取捕獲組獲取的第二個匹配項.
為了方便引用捕獲的內(nèi)容,JMeter提供了豐富的變量,可以根據(jù)實際情況選擇所需的變量.
假設(shè):
"Name of created variable"設(shè)置為refName
"Match No."設(shè)置為i
捕獲組的個數(shù)為m
各變量的具體含義如下:
refName: 按照"Template"設(shè)置保存的模板值;
refName_g: 捕獲組的個數(shù)
refName_g0: 正則表達(dá)式的值
refName_gN: 捕獲組N的第i個匹配項(N=1,2,3,...,m)
舉例說明:
4.2 選擇所有匹配項
設(shè)置Match No.為-I(I=1,2,3,...).
JMeter只要檢測到是負(fù)整數(shù)時則輸出所有匹配項.
假設(shè):
"Name of created variable"設(shè)置為refName
"Match No."設(shè)置為-I
捕獲組的個數(shù)為m
捕獲組匹配項的個數(shù)為n
各變量的具體含義如下:
refName: 在此種情況下始終顯示為默認(rèn)值(Default Value設(shè)置的值)
refName_i: 捕獲組第i個匹配項對應(yīng)的模板值(i=1,2,3,...,n)
refName_i_g: 捕獲組第i個匹配項個數(shù)(i=1,2,3,...,n)
refName_i_g0: 捕獲組取第i個匹配項時正則表達(dá)式的值(i=1,2,3,...,n)
refName_i_gj: 捕獲組j(j=1,2,3,...,m)的第i(i=1,2,3,...,n)個匹配項
下面是一個例子:
4.3 隨機(jī)選擇某個匹配項
設(shè)置Match No.為0
此種情況下,各變量的具體含義與"4.1 選擇某個匹配項"相同,不再說明.
總結(jié)
以上是生活随笔為你收集整理的正则表达式不包含某个字符串_JMeter必知必会系列(18) JMeter正则表达式提取器疑难分析...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: h5封装去底部_干货分享 | 一步一步教
- 下一篇: 很多字段的数据要插入另一张表_一文看懂数