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