正則表達式 —— 簡介

正則表達式 

簡介:

         正則表達式(Regular Expression)是一種文本模式,包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱爲"元字符")。    正則表達式使用單個字符串來描述、匹配一系列匹配某個句法規則的字符串。正則表達式是繁瑣的,但它是強大的,學會之後的應用會讓你除了提高效率外,會給你帶來絕對的成就感。

用途:

        在編寫處理字符串的程序或網頁時,經常會有查找符合某些複雜規則的字符串的需要。正則表達式就是用於描述這些規則的工具。換句話說,正則表達式就是記錄文本規則的代碼。很可能你使用過Windows/Dos下用於文件查找的通配符(wildcard),也就是*和?。如果你想查找某個目錄下的所有的Word文檔的話,你會搜索*.doc。在這裏,*會被解釋成任意的字符串。和通配符類似,正則表達式也是用來進行文本匹配的工具,只不過比起通配符,它能更精確地描述你的需求——當然,代價就是更復雜——比如你可以編寫一個正則表達式,用來查找所有以0開頭,後面跟着2-3個數字,然後是一個連字號“-”,最後是7或8位數字的字符串(像010-12345678或0376-7654321)。

 實例:

 

^[0,9]+abc$
  1. ^ 爲匹配輸入字符串的開始位置。

  2. [0-9]+匹配多個數字, [0-9] 匹配單個數字,+ 匹配一個或者多個。

  3. abc$匹配字母 abc 並以 abc 結尾,$ 爲匹配輸入字符串的結束位.

^[a-z0-9_-]{3,15}$

該正則表示字符串 只允許包含字符a-z、數字0-9、下劃線和連接字符(-) ,並設置字符長度範圍。

使用原因:

        典型的搜索和替換操作要求您提供與預期的搜索結果匹配的確切文本。雖然這種技術對於對靜態文本執行簡單搜索和替換任務可能已經足夠了,但它缺乏靈活性,若採用這種方法搜索動態文本,即使不是不可能,至少也會變得很困難。

優勢:

  1. 測試字符串內的模式。比如:可以測試輸入字符串,以查看字符串內是否出現電話號碼模式或信用卡號碼模式。這稱爲數據驗證。
  2. 替換文本,可以使用正則表達式來識別文檔中的特定文本,完全刪除該文本或者用其他文本替換它。
  3. 基於模式匹配從字符串中提取子字符串,可以查找文檔內或輸入域內特定的文本

發展歷史:

           正則表達式的"祖先"可以一直上溯至對人類神經系統如何工作的早期研究。Warren McCulloch 和 Walter Pitts 這兩位神經生理學家研究出一種數學方式來描述這些神經網絡。1956 年, 一位叫 Stephen Kleene 的數學家在 McCulloch 和 Pitts 早期工作的基礎上,發表了一篇標題爲"神經網事件的表示法"的論文,引入了正則表達式的概念。正則表達式就是用來描述他稱爲"正則集的代數"的表達式,因此採用"正則表達式"這個術語。隨後,發現可以將這一工作應用於使用 Ken Thompson 的計算搜索算法的一些早期研究,Ken Thompson 是 Unix 的主要發明人。正則表達式的第一個實用應用程序就是 Unix 中的 qed 編輯器。如他們所說,剩下的就是衆所周知的歷史了。從那時起直至現在正則表達式都是基於文本的編輯器和搜索工具中的一個重要部分。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章