正規表示式Regular Expression | regexp用法
正規語法(RegularGrammar)是一種相當簡單的語法,這種語法被Perl語言成功的用於字串比對,接著成為重要的程式設計工具。此種標準的正規語法後來被稱為正則表達式(RegularExpression)。目前,大部分的語言都已納入正則表達式的函式庫,正則表達是可以說是程式設計師必定要瞭解的工具,也就是常識的一部分。系統程式設計師更應該要瞭解正則表達式,因為正規語法是程式語言當中,用來描述基本詞彙(Vocabulary),並據以建構詞彙掃描器(Lexer)的基礎語法,Lexer是編譯器的基本元件之一。假如我們要用正則表達式描述整數數字,那麼,可以用[...
正規語法 (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 Email [a-zA-Z0-9_]+@[a-zA-Z0-9._]+ wt.ude.timk|ccc#wt.ude.timk|ccc URL http://[a-zA-Z0-9./_[1]]+ http://ccc.kmit.edu.tw/mybook/[2]為了協助讀者理解這些範例,我們有必要對範例中的一些正則表達式符號進行說明。
在實數的範例中,使用 . 代表小數點符號 .,不熟悉正則表達式的讀者一定覺得奇怪,為何要加上斜線符號 呢?這是因為在正則表達式當中,有許多符號具有特殊意義,例如點符號 . 是用來表示任意字元的,星號 * 是...