更新時(shí)間:2021-06-28 11:58:01 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2057次
正則表達(dá)式:描述了一種字符串匹配的模式,可以用來(lái)檢查一個(gè)串是否含有某種子串、將匹配的子串替換或者從某個(gè)串中取出符合某個(gè)條件的子串等。
對(duì)于正則表達(dá)式,相信很多人都知道或者聽(tīng)說(shuō)過(guò),但是很多人的第一感覺(jué)就是難學(xué),因?yàn)榭吹谝谎蹠r(shí),全是一堆各種各樣的特殊符號(hào),完全不知所云。
其實(shí)只是對(duì)正則不了解而以,了解了你就會(huì)發(fā)現(xiàn),原來(lái)就這樣啊。正則所用的相關(guān)字符其實(shí)不多,也不難記,更不難懂,唯一難的就是組合起來(lái)之后,可讀性比較差,而且不容易理解。
本文旨在讓大家對(duì)正則有一個(gè)基本的了解,能寫(xiě)得出簡(jiǎn)單的正則表達(dá)式,并在Jmeter的使用中,以滿(mǎn)足日常測(cè)試或性能測(cè)試中的需求。
1.必須掌握的正則字符
先簡(jiǎn)要看下,最常用的字符含義。
"^" :^會(huì)匹配行或者字符串的起始位置,有時(shí)還會(huì)匹配整個(gè)文檔的起始位置。
"$" :$會(huì)匹配行或字符串的結(jié)尾。
"\w":匹配字母,數(shù)字,下劃線。
例如我要匹配"a2345BCD__TTz" 正則:"\w+" 這里的"+"字符為一個(gè)量詞指重復(fù)的次數(shù)。
"\s":匹配空格。
例如字符 "a b c" 正則:"\w\s\w\s\w" 一個(gè)字符后跟一個(gè)空格,如有字符間有多個(gè)空格直接把"\s" 寫(xiě)成 "\s+" 讓空格重復(fù)。
".":匹配除了換行符以外的任何字符。
"[abc]": 字符組,匹配包含括號(hào)內(nèi)元素的字符。
"*": 重復(fù)零次或更多(貪婪模式)。
例如"aaaaaaaa" 匹配字符串中所有的a 正則:"a*" 會(huì)出到所有的字符"a"。
"+": 重復(fù)一次或更多次(懶惰模式)。
例如"aaaaaaaa" 匹配字符串中所有的a; 正則:"a+"會(huì)取到字符中所有的a字符,"a+"與"a*"不同在于"+"至少是一次而"*" 可以是0次。
"?": 重復(fù)零次或一次。
例如"aaaaaaaa" 匹配字符串中的a 正則 : "a?" 只會(huì)匹配一次,也就是結(jié)果只是單個(gè)字符a。
"{n}": 重復(fù)n次。
例如從"aaaaaaaa" 匹配字符串的a 并重復(fù)3次 正則:"a{3}" 結(jié)果就是取到3個(gè)a字符 "aaa"。
"{n,m}": 重復(fù)n到m次。
例如正則 "a{3,4}" 將a重復(fù)匹配3次或者4次;所以供匹配的字符可以是三個(gè)"aaa"也可以是四個(gè)"aaaa"正則都可以匹配到。
"{n,}": 重復(fù)n次或更多次。
與{n,m}不同之處就在于匹配的次數(shù)將沒(méi)有上限,但至少要重復(fù)n次 如 正則"a{3,}" a至少要重復(fù)3次。
"*?": 重復(fù)任意次,但盡可能少重復(fù)。
如 "acbacb" 正則"a.*?b" 只會(huì)取到第一個(gè)"acb" 原本可以全部取到但加了限定符后,只會(huì)匹配盡可能少的字符 ,而"acbacb"最少字符的結(jié)果就是"acb"。
"+?": 重復(fù)1次或更多次,但盡可能少重復(fù)。
與上面一樣,只是至少要重復(fù)1次。
"??": 重復(fù)0次或1次,但盡可能少重復(fù)。
如 "aaacb" 正則 "a.??b"只會(huì)取到最后的三個(gè)字符"acb"。
"{n,m}?": 重復(fù)n到m次,但盡可能少重復(fù)。
如 "aaaaaaaa" 正則 "a{0,m}" 因?yàn)樽钌偈?次所以取到結(jié)果為空
以上就是正則表達(dá)式中最基礎(chǔ)的部分知識(shí),大家是必須知道的知識(shí)點(diǎn),對(duì)于更加復(fù)雜部分的內(nèi)容本文未涉及。其實(shí)你看多了,就知道是什么意思了,就和你一開(kāi)始對(duì) Linux 命令不熟悉一樣,用多了自然而然就記住了。不過(guò)也可以先收藏著,當(dāng)作字典查找。
寫(xiě)完正則表達(dá)式,最好自己先驗(yàn)證下是否和預(yù)想的一樣,能夠提取你想要的。大家隨便百度一下在線正則表達(dá)式測(cè)試,就可以驗(yàn)證了。
2.正則如何在 jmeter 中運(yùn)用
在使用 Jmeter 過(guò)程中,會(huì)經(jīng)常使用到正則表達(dá)式提取器提取器,正則在做驗(yàn)證,與數(shù)據(jù)過(guò)濾時(shí)體現(xiàn)的威力是巨大的。
(1)引用名稱(chēng):下一個(gè)請(qǐng)求要引用的參數(shù)名稱(chēng),如填寫(xiě) accesstoken,則可用 ${accesstoken}引用它。
(2)正則表達(dá)式:這個(gè)是重點(diǎn),可以利用上面講的那些內(nèi)容提前自己想要的。
(3)模板:用 $$ 引用起來(lái),如果在正則表達(dá)式中有多個(gè)正則表達(dá)式,則可以是 $2$,$3$ 等等,表示解析提取第幾個(gè)值。如:$1$ 表示解析到的第 1 個(gè)值。
(4)匹配數(shù)字:可以理解為匹配到結(jié)果所出現(xiàn)的次數(shù),比如需要設(shè)置匹配數(shù)字為 1,在 JMeter 中使用 1 來(lái)表示,通常情況下填 0 即可
(5)缺省值:如果參數(shù)沒(méi)有取得到值,那默認(rèn)給一個(gè)值讓它取,我填的 Error。
3.最常見(jiàn)需求
應(yīng)用的場(chǎng)景:B 接口需要使用 A 接口返回的數(shù)據(jù),故需要對(duì) A 接口的響應(yīng)報(bào)文進(jìn)行后置處理,提取響應(yīng)內(nèi)容中的某個(gè)字段。
下一個(gè)接口要用到 auth2 度值就可以通過(guò) ${auth2}去使用了,這個(gè)是最常見(jiàn)的需求。
說(shuō)明:
( ) :將 () 之間括起來(lái)的表達(dá)式定義為 “組”(group),并且將匹配這個(gè)表達(dá)式的字符保存到一個(gè)臨時(shí)區(qū)域,我們主要就是利用這個(gè)元字符配合所指定的字符串匹配規(guī)則來(lái)進(jìn)行匹配信息的提取;
.+: 一個(gè)以上的任意字符,通過(guò)貪婪型匹配策略進(jìn)行表達(dá)式模板的匹配(最大匹配);
.+?:通過(guò)?元字符表示一個(gè)非貪婪模式匹配,即(最小匹配);
動(dòng)力節(jié)點(diǎn)官網(wǎng)的技術(shù)文檔中有JMeter教程可以學(xué)習(xí),也有相關(guān)視頻教程可以免費(fèi)下載。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)