正則表達(dá)式的“鼻祖”或許可一直追溯到科學(xué)家對(duì)人類神經(jīng)系統(tǒng)工作原理的早期研究。美國新澤西州的Warren McCulloch和出生在美國底特律的Walter Pitts這兩位神經(jīng)生理方面的科學(xué)家,研究出了一種用數(shù)學(xué)方式來描述神經(jīng)網(wǎng)絡(luò)的新方法,他們創(chuàng)新地將神經(jīng)系統(tǒng)中的神經(jīng)元描述成了小而簡單的自動(dòng)控制元,從而作出了一項(xiàng)偉大的工作革新。
在1956 年,出生在被馬克·吐溫(Mark Twain)稱為“美國最美麗的城市之一的”哈特福德市的一位名叫Stephen Kleene的數(shù)學(xué)科學(xué)家,他在Warren McCulloch和Walter Pitts早期工作的基礎(chǔ)之上,發(fā)表了一篇題目是《神經(jīng)網(wǎng)事件的表示法》的論文,利用稱之為正則集合的數(shù)學(xué)符號(hào)來描述此模型,引入了正則表達(dá)式的概念。正則表達(dá)式被作為用來描述其稱之為“正則集的代數(shù)”的一種表達(dá)式,因而采用了“正則表達(dá)式”這個(gè)術(shù)語。
之后一段時(shí)間,人們發(fā)現(xiàn)可以將這一工作成果應(yīng)用于其他方面。Ken Thompson就把這一成果應(yīng)用于計(jì)算搜索算法的一些早期研究,Ken Thompson是 Unix的主要發(fā)明人,也就是大名鼎鼎的Unix之父。Unix之父將此符號(hào)系統(tǒng)引入編輯器QED,然后是Unix上的編輯器ed,并最終引入grep。Jeffrey Friedl 在其著作“Mastering Regular Expressions (2nd edition)”中對(duì)此作了進(jìn)一步闡述講解,如果你希望更多了解正則表達(dá)式理論和歷史,推薦你看看這本書。
自此以后,正則表達(dá)式被廣泛地應(yīng)用到各種UNIX或類似于UNIX的工具中,如大家熟知的Perl。Perl的正則表達(dá)式源自于Henry Spencer編寫的regex,之后已演化成了pcre(Perl兼容正則表達(dá)式Perl Compatible Regular Expressions),pcre是一個(gè)由Philip Hazel開發(fā)的、為很多現(xiàn)代工具所使用的庫。正則表達(dá)式的第一個(gè)實(shí)用應(yīng)用程序即為Unix中的 qed 編輯器。
然后,正則表達(dá)式在各種計(jì)算機(jī)語言或各種應(yīng)用領(lǐng)域得到了廣大的應(yīng)用和發(fā)展,演變成為目前計(jì)算機(jī)技術(shù)森林中的一只形神美麗且聲音動(dòng)聽的百靈鳥。
以上是關(guān)于正則表達(dá)式的起源和發(fā)展的歷史描述,到目前正則表達(dá)式在基于文本的編輯器和搜索工具中依然占據(jù)這一個(gè)非常重要的地位。
在最近的六十年中,正則表達(dá)式逐漸從模糊而深?yuàn)W的數(shù)學(xué)概念,發(fā)展成為在計(jì)算機(jī)各類工具和軟件包應(yīng)用中的主要功能。不僅僅眾多UNIX工具支持正則表達(dá)式,近二十年來,在WINDOW的陣營下,正則表達(dá)式的思想和應(yīng)用在大部分 Windows 開發(fā)者工具包中得到支持和嵌入應(yīng)用!從正則式在Microsoft Visual Basic 6 或 Microsoft VBScript到.NET Framework中的探索和發(fā)展,WINDOWS系列產(chǎn)品對(duì)正則表達(dá)式的支持發(fā)展到無與倫比的高度,目前幾乎所有 Microsoft 開發(fā)者和所有.NET語言都可以使用正則表達(dá)式。如果你是一位接觸計(jì)算機(jī)語言的工作者,那么你會(huì)在主流操作系統(tǒng)(*nix[Linux, Unix等]、Windws、HP、BeOS等)、目前主流的開發(fā)語言(PHP、C#、Java、C++、VB、Javascript、Ruby等)、數(shù)以億萬計(jì)的各種應(yīng)用軟件中,都可以看到正則表達(dá)式優(yōu)美的舞姿。。