• 正則表達式

    編輯
    本詞條由“匿名用戶” 建檔。

    正則表達式

    編輯

    正則表達式(簡稱為regex或regexp;有時也被稱為理性表達式)是一個字符序列,用于指定文本中的搜索模式。通常,這種模式被字符串搜索算法用于對字符串進行查找或查找和替換操作,或用于輸入驗證。正則表達式技術是在理論計算機科學形式語言理論中發展起來的。正則表達式的概念始于20世紀50年代,當時美國數學家StephenColeKleene正式提出了正則語言的概念。它們隨著Unix文本處理工具的出現而被普遍使用。自20世紀80年代以來,存在不同的編寫正則表達式的語法,其中一種是POSIX標準,另一種是廣泛使用的Perl語法。正則表達式被用于搜索引擎文字處理器和文本編輯器的搜索和替換對話框、文本處理工具,如sed和AWK,以及詞法分析中。大多數通用編程語言或通過庫來支持正則表達式功能,包括Python、C、C++、Java、Rust、OCaml和JavaScript。

    正則表達式的歷史

    編輯

    正則表達式起源于1951年,當時數學家StephenColeKleene用他的數學符號描述了正則語言,稱為正則事件。它們出現在理論計算機科學、自動機理論(計算模型)以及形式語言的描述和分類等子領域中。其他早期的模式匹配的實現包括SNOBOL語言,它沒有使用正則表達式,而是使用自己的模式匹配結構。正則表達式從1968年開始在兩種用途中進入大眾視野:文本編輯器中的模式匹配和編譯器中的詞法分析。正則表達式首次以程序形式出現是在KenThompson將Kleene的符號植入編輯器QED中,作為匹配文本文件中模式的一種手段。為了提高速度,湯普森在兼容時間共享系統上通過及時編譯(JIT)對IBM7094代碼實現了正則表達式匹配,這是JIT編譯的一個重要的早期例子。后來,他將這種能力添加到Unix編輯器ed中,這最終導致了流行的搜索工具grep對正則表達式的使用(grep這個詞來源于ed編輯器中正則表達式搜索的命令:g/re/p意思是全局搜索正則表達式和打印匹配行)。大約在湯普森開發QED的同時,包括DouglasT.Ross在內的一群研究人員實現了一個基于正則表達式的工具,該工具被用于編譯器設計中的詞法分析。1970年代,貝爾實驗室的Unix程序中使用了這些正則表達式原始形式的許多變體,包括vi、lex、sed、AWK和expr,以及其他程序,如Emacs(它有自己的、不兼容的語法和行為)。Regexes隨后被廣泛的程序采用,這些早期的形式在1992年的POSIX.2標準中被標準化。在20世紀80年代,更復雜的重碼出現在Perl中,它最初來源于HenrySpencer(1986)編寫的重碼庫,后來他為Tcl編寫了高級正則表達式的實現。Tcl庫是一個混合的NFA/DFA實現,具有改進的性能特征。采用Spencer的Tcl正則表達式實現的軟件項目包括PostgreSQL。后來Perl在Spencer的原始庫上進行了擴展,增加了許多新的功能。在Raku(原名Perl6)的設計中,部分努力是為了改進Perl的regex集成,并增加它們的范圍和能力,以允許定義解析表達式語法。其結果是一種叫做Raku規則的迷你語言,它被用來定義Raku語法以及為程序員提供一種語言的工具。這些規則保持了Perl5.xregexes的現有特性,但也允許通過子規則進行BNF式的遞歸解析器的定義。

    正則表達式

    在文檔和數據庫建模的結構化信息標準中使用重碼開始于20世紀60年代,在20世紀80年代,當像ISOSGML(由ANSIGCA101-1983預示)這樣的工業標準合并時,重碼的使用得到了擴展。結構規范語言標準的內核由重組詞組成。它的使用在DTD元素組的語法中是很明顯的。在使用正則表達式之前,許多搜索語言允許簡單的通配符,例如,*可以匹配任何字符序列,而?可以匹配單個字符。今天在文件名的glob語法和SQL的LIKE操作符中可以找到這種做法的遺跡。從1997年開始,PhilipHazel開發了PCRE(Perl兼容正則表達式),它試圖密切模仿Perl的regex功能,并被許多現代工具包括PHP和ApacheHTTP服務器所使用。今天,在編程語言、文本處理程序(特別是詞法)、Adv.

    內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/164073/

    (1)
    詞條目錄
    1. 正則表達式
    2. 正則表達式的歷史

    輕觸這里

    關閉目錄

    目錄
    91麻精品国产91久久久久