正規表達式
正規語法 (Regular Grammar) 是一種相當簡單的語法,這種語法被 Perl 語言成功的用於字串比對,接著成為重要的程式設計工具。此種標準的正規語法後來被稱為正則表達式 (Regular Expression)。
目前,大部分的語言都已納入正則表達式的函式庫,正規表達式可以說是程式設計師必定要瞭解的工具,也就是常識的一部分。系統程式設計師更應該要瞭解正則表達式,因為正規語法是程式語言當中,用來描述基本詞彙 (Vocabulary),並據以建構詞彙掃描器 (Lexer) 的基礎語法,Lexer 是編譯器的基本元件之一。
假如我們要用正則表達式描述整數數字,那麼,可以用 [0123456789]+
這個表達式,其中的中括號 [
與 ]
會框住一群字元,用來代表字元群,加號 + 所代表的是重複 1 次或以上,因此,該表達式就可以描述像 3702451 這樣的數字。然而,在正則表達式中,為了更方便撰寫,於是允許用 [0-9]+
這樣的式子表達同樣的概念,其中的 0-9 其實就代表了 0123456789 等字元,這是一種簡便的縮寫法。甚至,可以再度縮短後以 [\d]+
代表,其中的 \d
就代表數字所成的字元集合。
利用範例學習是理解正則表達式的有效方法,表格 1 就顯示了一些具有代表性的正則表達式範例。
表格 1. 正則表達式的範例
語法 | 正則表達式 | 範例 |
---|---|---|
整數 | [0-9]+ | 3704 |
有小數點的實數 | [0-9]+.[0-9]+ | 7.93 |
英文詞彙 | [A-Za-z]+ | Code |
變數名稱 | [A-Za-z_][A-Za-z0-9_]* | _counter |
[a-zA-Z0-9_]+@[a-zA-Z0-9._]+ | ccc@kmit.edu.tw | |
URL | http://[a-zA-Z0-9./_]+ | http://ccc.kmit.edu.tw/mybook/ |