正則表達式(RE)

正則表達式

在了解正則表達式之前我們先來對幾個詞做一下解釋,以方便之后的學習

字母表:是一個有限的符號集合。典型的例子包括字母、數位、標點符號。如ASCII碼表,亦或是{0,1}這一組二進制字母表,亦或是{a,1,w,4}這一組我們自定義的字母表。這里使用的字母表是一種廣泛上的定義。
:是字母表中符號的一個有窮序列,稱為串,通常用s表示,長度記為|s|??沾褪情L度為0的串,用ε表示。
語言:是某個給定字母表上一個任意的可數的串的集合。同樣是一個廣泛上的定義。值得注意的是空集?和僅包含空串{ε}的集合都為語言。語言直接可以進行運算。這里注意一下kleene閉包和正閉包,正閉包不包含ε,kleene閉包包含ε。

語言的運算

了解完上述的一些概念后,就可以來看一下正則表達式了。

正則表達式是一種規則表達式,用來對語言進行匹配,假如一個正則表達式為r或是s,那這個正則式可以表示語言L( r )或L(s)
一些規則:

  1. ( r ) | ( s ) 是一個正則表達式,表示語言 L( r ) ∪ L( s )
  2. ( r )( s ) 是一個正則表達式,表示語言 L( r )L( s )
  3. ( r )* 是一個正則表達式,表示語言 (L( r ) )*
  4. ( r ) 是一個正則表達式,表示語言 L( r )

基本運算

正則運算規律

在這之后,又對基本的正則表達式進行了擴展,分別為

  1. 一個或多個實例:( r )+ 是一個正則表達式,表示語言 (L( r ))+ 。r* = r+ | ε
  2. 零個或一個實例:r? 等價于 r | ε
  3. 字符類:a | b | c | d | ... | z 可以表示為 [abc...z]
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容