正規表示式與 Kleene 定理
正規表示式的基本情形
每個正規表示式都是由較小的表示式組合而成,所以這個構造必須有個起點。基本情形就是最小、不可再分割的正規表示式,是你無法再拆解的原子。正如句子由字詞構成、字詞由字母構成,複雜的樣式也是由這三個起點構成的。
基本情形恰好有三種。第一,對於字母表 Σ(Sigma)中的每個符號 a,表示式 a 標示語言 { a },也就是那個單一的一字元字串。第二,符號 ε(epsilon)標示語言 { ε },其唯一成員是空字串(長度為零的字串)。第三,符號 ∅ 標示空語言 { },它完全不含任何字串。值得停下來看看後兩者的差別:{ ε } 恰好有一個元素(空字串),而 ∅ 一個都沒有。它們在公式中的行為非常不同。
這些原子之所以重要,是因為每一條關於正規表示式的定理、每一個對表示式意義的歸納定義,都以它們為錨。當你對正規表示式做結構歸納法證明時,基本情形就是你檢查這三個原子的地方,而歸納步驟則涵蓋聯集、串接與星號。把原子處理對了,其餘的便能機械地推導出來。
比較這三個原子:a 標示 { a }(一個長度為 1 的字串)、ε 標示 { ε }(一個長度為 0 的字串)、∅ 標示 { }(沒有字串)。例如,把 ε 串接到任何東西上都不會改變它,而把 ∅ 串接到任何東西上則會把它清成 ∅。
空字串原子 ε 與空集原子 ∅ 並不相同。
別把 ε 與 ∅ 搞混:ε 是一個字串(空的那一個),{ ε } 有一個元素;∅ 則是含零個元素的語言。把兩者當成同一回事是經典的初學錯誤。
又稱
另見