日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

詳解JMeter正則表達式

系統(tǒng) 2374 0

詳解JMeter正則表達式(1)

1.概覽

JMeter中包含范本匹配軟件Apache Jakarta ORO 。在Jakarta網(wǎng)站上有一些關(guān)于它的文檔,例如a summary of the pattern matching characters :

http://jakarta.apache.org/oro/api/org/apache/oro/text/regex/package-summary.html

另外,還有關(guān)于該軟件老版本的文檔OROMatcher User's guide ,也許會有一些幫助。URL地址: http://www.savarese.org/oro/docs/OROMatcher/index.html

JMeter的范本匹配與Perl語言的范本匹配類似。一個安裝完整的Perl會包含很多關(guān)于正則表達式的文檔(搜尋perlrequick、perlretut、perlre、perlreref)。

我們有必要分清楚包含(Contains)和匹配(Matches)的差異,它們用于響應(yīng)斷言測試元件:

包含(Contains)意味著正則表達式至少部分匹配目標(biāo),例如,'alphabet' 包含 'ph.b.',因為正則表達式匹配其子字符串'phabe'。

匹配(Matches)意味著正則表達式完全匹配目標(biāo)。例如,'alphabet'匹配'al.*t'。

在這一情況下,它等同于使用^ 和$封裝正則表達式,即'^al.*t$'。但是事情并不總是這樣。例如,正則表達式'alp|.lp.*'包含于'alphabet',但并不匹配'alphabet'。

原因在于當(dāng)范本匹配器在'alphabet'中找到序列'alp'后,就會停止嘗試其他組合,而且'alp'不同于'alphabet',它不包含'habet'。

不同于Perl,沒必要將正則表達式用//封裝。

2.實例

1)提取單個字符串

假設(shè)測試人員期望匹配Web頁面的如下部分:name="file" value="readme.txt">并提取readme.txt。

一個符合要求的正則表達式:

  1. name="file" value="(.+?)"> 。 ?

上面用到的特殊字符包括如下幾個。

( 和 ):封裝了待返回的匹配字符串。

.:匹配任何字符。

+:一次或多次。

?:不要太貪婪,在找到第一個匹配項后停止。

如果沒有?,在找到第一個">后,會繼續(xù)尋找,直到最后一個">,這么做很可能不是測試人員期望的。

盡管上面的表達式可以達到目的,但是使用如下表達式更有效率:name="file" value="([^"]+)">,其中[^"]-意味著匹配任何東西(除了")。在這種情況下,匹配引擎在找到第一個右側(cè)"后,就會停止搜索。而 上面例子中的匹配引擎會去尋找">。

2)提取多個字符串

假設(shè)測試人員期望匹配Web頁面的如下部分:name="file" value="readme.txt">,并提取file.name和readme.txt。

一個符合要求的正則表達式:

  1. name = "([^" ]+)"? value = "([^" ]+)"?

這會創(chuàng)建兩個組合,并可用于JMeter正則表達式模板,形如$1$ 和$2$。

JMeter正則表達式提取器會將組合的值放在指定變量中。

詳解JMeter正則表達式(2)

例如,

引用名稱:MYREF。

正則表達式:name="(.+?)" value="(.+?)"。

模板:$1$$2$。

不要用/ /封裝正則表達式。

如下變量的值將會被設(shè)定。

MYREF: file.namereadme.txt。

MYREF_g0: name="file.name" value="readme.txt"。

MYREF_g1: file.name。

MYREF_g2: readme.txt。

這些變量后續(xù)可以在JMeter測試計劃中引用,形如${MYREF}、${MYREF_g1}等。

3.關(guān)鍵字

正則表達式使用特定字符作為關(guān)鍵字,這些字符對正則表達式引擎有特殊意義。在字符串中使用這些字符必須進行轉(zhuǎn)義(使用反斜杠"\"),目的是將它們當(dāng)成原始字符,而非正則表達式的關(guān)鍵字。下面是關(guān)鍵字和它們的含義。

( ):組合。

[ ]:字符集合。

{ }:重復(fù)。

+ ?:重復(fù)。

.:任意匹配字符。

\:轉(zhuǎn)義字符。

| -:選擇符。

^ $:字符串或行的起始和結(jié)尾。

注意,ORO不支持\Q和\E關(guān)鍵字。

4.修改器(Modifier)

理論上修改器可以被放置在正則表達式的任何地方,并被放置的位置開始向后生效。(ORO存在一個BUG,修改器不能放在正則表達式的末尾。盡管修改器在這里不生效)。

單行(?s)和多行(?m)修改器通常都被放在正則表達式的開頭。

忽略(?i)修改器可以被用來僅僅影響正則表達式的某一部分,例如:

  1. Match?ExAct?case?or?(?i)ArBiTrARY(?-i)?case?

由于單行和多行修改器的設(shè)置不同,范本匹配的表現(xiàn)也略有不同。請注意,單行和多行操作符之間沒有任何關(guān)聯(lián);它們可以被單獨指定。

1)單行模式

單行模式只影響關(guān)鍵字符"."。默認(rèn)情況下,"."可以匹配任何字符(除了換行)。在單行模式下,"."還匹配換行。

2)多行模式

多行模式只影響關(guān)鍵字符"^"和"$"。默認(rèn)情況下,"^"和"$"僅僅匹配字符串的開始和結(jié)尾。而在多行模式下,"^"和"$"匹配每一行的開始和結(jié)尾。

?

詳解JMeter正則表達式


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 永宁县| 桐柏县| 四川省| 南靖县| 石阡县| 苍山县| 来宾市| 额尔古纳市| 丽水市| 敦化市| 玉环县| 康平县| 莎车县| 腾冲县| 建德市| 达尔| 徐汇区| 如东县| 中西区| 济阳县| 彩票| 芦溪县| 千阳县| 天长市| 长兴县| 栖霞市| 台安县| 鞍山市| 柳林县| 青州市| 白城市| 苗栗市| 四子王旗| 淮南市| 集贤县| 乌拉特中旗| 永顺县| 澄迈县| 定南县| 宁晋县| 洛扎县|