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