陳鍾誠

Version 1.0

正規表達式

正規語法 (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._]+ccc@kmit.edu.tw
URLhttp://[a-zA-Z0-9./_]+http://ccc.kmit.edu.tw/mybook/