什麼是正則表達式
在編寫處理字符串的時候,經常會有查找符合某些複雜規則的字符串的需要,正則表達式就是用來描述這些規則的工具,換句話說,正則表達式就是記錄文本規則的代碼。
正則表達式語法遞進學習
(1) 關於大小寫,正則表達式處理工具會有控制的機制,人爲可調,後面會講。
(2) \b
這是屬於正則表達式裏面的所謂元字符。看看應用,假設想要在某段文本中查找”men”這個字符串。若是沒有使用\b,那麼結果是這樣的:
如果使用了\b的話,結果就是這樣:
\b匹配的是單詞邊界,不匹配任何字符。其中的單詞是指另外一個元字符\w所規定的字符串,具體有哪些呢?
這個是看情況的,在支持ASCII碼的語言中,\w那就是等價於【a-A-9_】;而在Unicode的語言中,默認情況下,除了以上那些,還包括漢字,全角數字等。
(3) “.” “*”
如果要查找以”men”開頭,以”Lucy”結尾的字符串,怎麼做呢,可以如下操作,結果如下:
“.” 和”*”都是屬於元字符。
“.”匹配除了換行符以外的任意一位字符。
“*”不代表字符和位置(不要把它和windows系統裏面的查詢的通配符論比),在正則表達式裏面,它表達的是*前邊的內容可以連續重複使用任意次以上。
上述圖片裏面的意思就是以”men”開頭,”Lucy”結尾,中間有任意數量但是不能有換行的字符的字符串。所以圖片藍色框框內的字符串沒有連起來,因爲換行了。”*”可以匹配的是0個或者更多個,有一個符號作用與*相同,那就是”+”,但是它匹配的是1個或者更多個。
(4) “\d” “-“
若是想要查找數字字符串怎麼辦?使用”\d”。
“\d”也是元字符,表示一位數字(0~9)。
“-”不屬於元字符,只用來匹配自己,所以可以用來匹配中橫線或者減號。
如下圖所表示:
但是輸入這麼多的符號,非常的麻煩,於是,另外的一個方法解決這個麻煩:
相必已經看到,在\d的後面多了{2},其中2就表示是數目。
(5) 測試工具,這裏使用的測試工具是從網上下載的RegexBuddy,可以用來做正則表達式的練習和測試。
(6) \w
再來說說\w,前面已經說過,\w表示的是一個匹配單詞的元字符,\w也可以用{數字}來表示這個單詞有幾位。例如\b\w{4}\b:匹配4個字符的單詞。
(7) 其它常用元字符
代碼 | 詳解 |
\s | 匹配任意的空白符 |
^ | 匹配字符串的開始 |
$ | 匹配字符串的結束 |
說明:\s匹配的空白符包括空格,製表符(tab)換行符,中文全角空格。
符號^和$類似於\b,下面是一個實例:
其中,{5,12}是{5}這種形式的擴展用法,{5}表示必須是5個,而{5,12}則是表示可以爲5~12個數,重複方法小結:
代碼 | 詳解 |
* | 重複0次或者更多次 |
+ | 重複1次或者以上 |
? | 重複0次或者1次 |
{n} | 重複n次 |
{n,} | 重複n次或者更多次 |
{n,m} | 重複n次到m次 |