正則表達(dá)式是一種描述字符串結(jié)構(gòu)的語法規(guī)則,是一個特定的格式化模式,可以匹配、替換、截取匹配的字串。對于用戶來說,可能以前接觸過DOS,如果想匹配當(dāng)前文件夾下所有文本文件,可以輸入“dir *.txt”命令,按Enter鍵后所有“.txt”文件都會被列出來。這里的“*.txt”即可理解為一個簡單的正則表達(dá)式。
在學(xué)習(xí)正則表達(dá)式之前,我們先來了解一下正則表達(dá)式中的幾個容易混洗的術(shù)語,這對學(xué)習(xí)正則表達(dá)式有很大的幫助。
grep:最初是ED編輯器中的一條命令,用來顯示文件中特定的內(nèi)容,后來成為一個獨立的工具grep。
egrep:grep雖然不斷地更新升級,但仍然無法跟上技術(shù)的腳步。為此,貝爾實驗室推出了egrep。意為“擴展的grep”,這大大增強了正則表達(dá)式的能力。
POSIX(Portable Operating System Interface of Vnix,可移值操作系統(tǒng)接口):在grep發(fā)展的同時,其他一些開發(fā)人員也按照自己的喜好開發(fā)出了具有獨特風(fēng)格的版本。但問題也隨之而來,有的程序支持某個元字符,而有的程序則不支持。因此就有了POSIX,POSIX是一系列標(biāo)準(zhǔn),確保了造作系統(tǒng)之間的可移植性。但POSIX和SQL一樣,沒有成為最終的標(biāo)準(zhǔn)而只能作為一個參考。
Perl(Practical Extraction and Reporting Language,實際抽取與匯報語言):1987年,Larry Wall發(fā)布了Perl。在隨后的7年時間里,Perl經(jīng)歷了從Perl 1到現(xiàn)在的Perl 5的發(fā)展,最終Perl成為了POSIX之后的另一個標(biāo)準(zhǔn)。
PCER:Perl的成功,讓其他的開發(fā)人員在某種程度上要兼容Perl,包括C/C++、Java、Python等都有自己的正則表達(dá)式。1997年,Philip Hazel開發(fā)了PCRE庫,這是兼容Perl正則表達(dá)式的一套正則引擎,其他開發(fā)人員可以將PCRE整合到自己的語言中,為用戶提供豐富的正則功能。許多語言都使用PCRE,PHP正式其中之一。