正則表達式:描述了一種字符串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。
對於正則表達式,相信很多人都知道或者聽說過,但是很多人的第一感覺就是難學,因為看第一眼時,全是一堆各種各樣的特殊符號,完全不知所雲。
其實只是對正則不了解而以,了解了你就會發現,原來就這樣啊。正則所用的相關字符其實不多,也不難記,更不難懂,唯一難的就是組合起來之后,可讀性比較差,而且不容易理解。
本文旨在讓大家對正則有一個基本的了解,能寫得出簡單的正則表達式,並在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命令不熟悉一樣,用多了自然而然就記住了。不過也可以先收藏着,當作字典查找。
寫完正則表達式,最好自己先驗證下是否和預想的一樣,能夠提取你想要的。大家隨便百度一下在線正則表達式測試,就可以驗證了。