正規表示式想必大家都用過,確實是很好很強大的東東。但是正規表示式的形式化定義各位知道嗎?最近無聊看一本編譯方面的書時,裡面正好講到了這個,還是挺有意思的。發出來和大家分享。
首先,正規表示式是一種符號表示法,是為了用有限的描述來詳細說明(可能)無限的語言。也就是說正規表示式是針對某個特定語言的,可以說每個正規表示式都定義了一種語言。每個正規表示式代表乙個字符集。在正規表示式中,需要定義如下幾個概念:
以上這些概念就完整的定義了正規表示式,其中並沒有我們所熟悉的那一套規則。不過其實那些規則都是用以上這些概念推導出來的,下面舉幾個簡單的例子。在舉例之前,再交代一下,並操作符和ε在書寫時是可以省略的,而kleene閉包的優先順序高於並操作,並操作的優先順序高於或操作。
你看,現在的正在表示式已經像回事兒了。接下去要做的無非就是引入特殊字元(.,\w,\s之類的)、貪婪模式、分組匹配等東東,不過核心的形式化模型就是上面的那些概念。
還真是佩服研究這種東西的人,可以把乙個東東做的在理論和實戰領域都這麼優雅。
正規表示式定義
正規表示式定義 正規表示式 regular expression 描述了一種字串匹配的模式,可以用來檢查乙個串是否含有某種子串 將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。列目錄時,dir txt或ls txt中的 txt就不是乙個正規表示式,因為這裡 與正則式的 的含義是不同的。正規...
正規表示式 定義
前言 在前端頁面使用中,遇到日期格式的驗證,開始使用了一款表單控制項驗證,但是不相容!而且使用起來還受到很大約束,所以就決定自己寫原生js。為了完成日期格式的驗證,第一步,當然是學會使用正規表示式。以前都是直接複製使用,這次理解原理,自己原生寫。首先,總結了正規表示式的定義。正規表示式 正式定義 乙...
正規表示式 定義
前言 在使用中,頭版,邂逅日期格驗證型別,我開始使用表單控制項驗證。但不相容!和它的使用也將是乙個非常大的制約因素,所以我決定寫本地js。完成日期格驗證型別,步,當然是學會使用正規表示式。曾經都是直接複製使用,這次理解原理,自己原生寫。首先,總結了正規表示式的定義。正規表示式 正式定義 乙個正規表示...