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