1. 程式人生 > >jmeter教程(七):正則表示式簡介

jmeter教程(七):正則表示式簡介

在後面講關聯和斷言,都會涉及到正則表示式,那麼,就先簡單的介紹一下正則表示式吧。

正則表示式的定義,這裡就不說了,百度裡應該有。正則表示式可以做什麼?處理文字,也只能處理文字。正則表示式,也常被程式設計師戲稱為“火星文”,從這個稱謂可以看出,正則表示式很難看懂。難到什麼程式呢?當你寫完一個比較複雜的正則之後,回過頭來看,卻可能發現自己都看不懂了,正則表示式就是有這麼神奇!當然,如果一個功能,用正則來處理,也要寫得很複雜的話,那如果不用正則,就可能是洋洋灑灑一大篇了。

先來看正則表示式裡獨有的轉義字元。有\d、\D、\w、\W、\s、\S,這些轉義字元,都是成對的出現,小寫和大寫的意義取反。比如\d代表數字,\D則代表非數字。\w代表文件字元,\W取反。\s代表空白字元,\S代表非空白字元。注意:很多人會使用\w去匹配數字字母,如果是使用較早的正則引擎的話,會有問題,\w不僅會匹配數字字母,還會匹配中文字元,包括中文的標點符號。現在的版本,好像\w都只匹配數字和字母了,試了下java和js都是這樣。然後一些通用的轉義字元,如\t、\n、\f等,在正則也一樣有用。

萬用字元是“.”,也就是英文的句號,很多人會把這個萬用字元理解為匹配所有字元,這是不對的,這個萬用字元是匹配除換行符及換頁符之外的所有字元。如果要匹配所有字元,應該用“\s\S”類似的表示式。

量詞,有*、?、+及花括號表示式,*代表可以不出現,也可以出現,並且出現次數不限制。比如\d*,就代表字串中可以沒有數字字元,也可以有數字字元,數字字元出現多少次不限制。“1234”、“asdr”、“sd223”這些字串都可以匹配\d*。?代表可以不出現,也可以出現一次。“asdf”、“sdf2”這些都可以匹配\d?,“234a”匹配\d?就不行了,因為數字字元出現了三次。+代表至少出現一次,最多出現多少次不限制,“23ssd”、“sd2df”這些可以匹配\d+,“akds”匹配\d+就不行了。花括號形式如\d{4},這個代表只能有四個數字字元,比如手機號只能是11位的數字,就可以使用\d{11}匹配使用者的輸入,如果不匹配,則代表使用者的輸入不合法。\d{8,16},代表數字字元至少要有8位,最多隻能有16位。\d{,12}代表數字字元可以不出現,也可以出現,但數字字元最多隻能有12個。\d{3,}代表數字字元至少要出現3次,最多出現多少次,不限制。

中括號表示式,形如[abc]這樣的。這個表示式的意思是,匹配a或b或c。在中括號中還可以使用-來表示取一個區間的值,如[0-9]和[0123456789]是一樣的意思,也就是匹配數字字元。在中括號中可以使用^來表示取反,^必須放在中括號裡第一個字元的位置。如[^0-9]代表除去數字字元之外的任意字元,也就是非數字字元的意思了,[0-9^a-z]這樣寫是不行的。在中括號表示式裡面,不能使用\d、\D、\w、\W、\s、\S這些轉義字元,如[^\d]這樣是不行的。

邊界字元,^代表字串的起始位置,$代表字串的結束位置,比如^abc,那麼字串必須以abc開頭,才可以匹配上。abc$,則字串必須以abc結尾,才可以匹配上。^abc$,就只能匹配abc字串了。\b代表單詞邊界,在英文中,單詞以空格分隔,這個是看得見的分隔符,看不見的是,單詞的前後,都會有一個\b字元,所有要匹配is單詞,就要寫\bis\b,這樣就不會把this匹配上了,因為在th和is之間沒有\b邊界符。\B就是非單詞邊界符了。

組,分為捕獲組和非捕獲組。呃,這個講起來,沒有例子,很難講呢,這個在講jmeter裡的關聯和正則表示式提取器再講吧