正規表示式與 Kleene 定理
正規表示式中的串接
當你把兩個樣式一個接一個寫下時,你是在說「先符合這個,再符合那個,中間沒有空隙」。這就是串接,正規表示式中把樣式首尾相黏的方式。每當順序重要時你都會用到它,例如區碼後面接著電話號碼。
若 R 與 S 是正規表示式,把它們並排寫成 RS(有時寫成 R·S)標示出這樣的語言:取 L(R) 中的一個字串,緊接著放上 L(S) 中的一個字串所能組成的每個字串。形式上 L(RS) = { uv : u ∈ L(R) 且 v ∈ L(S) },其中 uv 表示字串 u 後接字串 v,∈ 表示「是其成員」。例如在 {a, b} 上,表示式 (a+b)(a+b) 標示所有長度恰為 2 的字串:{ aa, ab, ba, bb }。串接沒有書寫的運算子,並列本身就是運算子。
串接滿足結合律——(RS)T 與 R(ST) 標示相同的語言,所以我們省去括號——但不滿足交換律:ab 與 ba 是不同的字串,所以 RS 與 SR 一般不同。空字串原子 ε 是它的單位元素:Rε 與 εR 都標示與 R 相同的語言。空集 ∅ 是吸收元素:R∅ 與 ∅R 都標示 ∅,因為若任一邊提供不出字串,就沒有東西可黏。
表示式 ab*c 標示一個 a、接著零個或多個 b、再接著一個 c:ac、abc、abbc、abbbc 等等。由左至右讀作「一個 a,後接若干個 b,再後接一個 c」。
並排的樣式必須依序符合。
串接不滿足交換律:RS 與 SR 通常標示不同的語言,因為字串順序重要(ab 不是 ba)。初學者有時誤以為兩者可互換。
又称
另见