什么是正則表達式?

正則表達式入門專題開始
服務器君一共花費了219.775 ms進行了7次數據庫查詢,努力地為您提供了這個頁面。
試試閱讀模式?希望聽取您的建議

正則表達式看上去并不像某種語言或者某個技術那么重要,僅靠它們你無法寫出一個應用程序來。然而,它們卻總是在你的開發過程中如影隨形,不管是進行表單驗證,還是高亮顯示搜索結果,又或者是進行 URL 地址映射,總是需要使用它們。幾乎所有的語言都對它進行了不同程度的支持,由此,足見其在文本匹配這一領域中的地位。

正則表達式應該算是開發人員應該掌握的一個輕量級的技能,然而,它稀奇古怪地匹配模式總讓人們聯想起外星語言。本文中,我期望能和大家一道,通過豐富地例子,由淺入深地對正則表達式作一個復習和回顧。

什么是正則表達式?

正則表達式也叫做匹配模式(Pattern),它由一組具有特定含義的字符串組成,通常用于匹配和替換文本。

Wiki:正則表達式(英語:Regular Expression、regex或regexp,縮寫為RE),也譯為正規表示法、常規表示法,在計算機科學中,是指一個用來描述或者匹配一系列符合某個句法規則的字符串的單個字符串。在很多文本編輯器或其他工具里,正則表達式通常被用來檢索和/或替換那些符合某個模式的文本內容。許多程序設計語言都支持利用正則表達式進行字符串操作。例如,在Perl中就內建了一個功能強大的正則表達式引擎。正則表達式這個概念最初是由Unix中的工具軟件(例如sed和grep)普及開的。正則表達式通??s寫成“regex”,單數有regexp、regex,復數有regexps、regexes、regexen。

通常情況下,如果一個文本中出現了多個匹配,正則表達式返回第一個匹配,如果將 global 設置為 true,則會返回全部匹配;匹配模式是大小寫敏感的,如果設置了 ignore case 為 true,則將忽略大小寫區別。

有時侯正則表達式也簡稱為表達式、匹配模式或者模式,它們可以互換。 這里默認 global 和 ignore case 均為 true。

正則表達式的歷史

正則表達式的“鼻祖”或許可一直追溯到科學家對人類神經系統工作原理的早期研究。美國新澤西州的Warren McCulloch和出生在美國底特律的Walter Pitts這兩位神經生理方面的科學家,研究出了一種用數學方式來描述神經網絡的新方法,他們創新地將神經系統中的神經元描述成了小而簡單的自動控制元,從而作出了一項偉大的工作革新。

在1956 年,出生在被馬克·吐溫(Mark Twain)稱為“美國最美麗的城市之一的”哈特福德市的一位名叫Stephen Kleene的數學科學家,他在Warren McCulloch和Walter Pitts早期工作的基礎之上,發表了一篇題目是《神經網事件的表示法》的論文,利用稱之為正則集合的數學符號來描述此模型,引入了正則表達式的概念。正則表達式被作為用來描述其稱之為“正則集的代數”的一種表達式,因而采用了“正則表達式”這個術語。

之后一段時間,人們發現可以將這一工作成果應用于其他方面。Ken Thompson就把這一成果應用于計算搜索算法的一些早期研究,Ken Thompson是 Unix的主要發明人,也就是大名鼎鼎的Unix之父。Unix之父將此符號系統引入編輯器QED,然后是Unix上的編輯器ed,并最終引入grep。Jeffrey Friedl 在其著作“Mastering Regular Expressions (2nd edition)”中對此作了進一步闡述講解,如果你希望更多了解正則表達式理論和歷史,推薦你看看這本書。

自此以后,正則表達式被廣泛地應用到各種UNIX或類似于UNIX的工具中,如大家熟知的Perl。Perl的正則表達式源自于Henry Spencer編寫的regex,之后已演化成了pcre(Perl兼容正則表達式Perl Compatible Regular Expressions),pcre是一個由Philip Hazel開發的、為很多現代工具所使用的庫。正則表達式的第一個實用應用程序即為Unix中的 qed 編輯器。

然后,正則表達式在各種計算機語言或各種應用領域得到了廣大的應用和發展,演變成為目前計算機技術森林中的一只形神美麗且聲音動聽的百靈鳥。

以上是關于正則表達式的起源和發展的歷史描述,到目前正則表達式在基于文本的編輯器和搜索工具中依然占據這一個非常重要的地位。

在最近的六十年中,正則表達式逐漸從模糊而深奧的數學概念,發展成為在計算機各類工具和軟件包應用中的主要功能。不僅僅眾多UNIX工具支持正則表達式,近二十年來,在WINDOW的陣營下,正則表達式的思想和應用在大部分 Windows 開發者工具包中得到支持和嵌入應用!從正則式在Microsoft Visual Basic 6 或 Microsoft VBScript到.NET Framework中的探索和發展,WINDOWS系列產品對正則表達式的支持發展到無與倫比的高度,目前幾乎所有 Microsoft 開發者和所有.NET語言都可以使用正則表達式。如果你是一位接觸計算機語言的工作者,那么你會在主流操作系統(*nix[Linux, Unix等]、Windws、HP、BeOS等)、目前主流的開發語言(PHP、C#、Java、C++、VB、Javascript、Ruby等)、數以億萬計的各種應用軟件中,都可以看到正則表達式優美的舞姿。

延伸閱讀

此文章所在專題列表如下:

  1. 什么是正則表達式?
  2. 正則入門:匹配固定的單個字符
  3. 正則入門:匹配任意的單個字符
  4. 正則入門:字符組的使用
  5. 正則入門:在字符組中使用字符區間
  6. 正則入門:反義字符組的使用
  7. 正則入門:匹配空字符
  8. 正則入門:匹配一個或多個字符
  9. 正則入門:匹配零個或多個字符
  10. 正則入門:匹配零個或一個字符串
  11. 正則入門:匹配固定數目的字符
  12. 正則入門:匹配區間內數目的字符
  13. 正則入門:貪婪匹配
  14. 正則入門:惰性匹配
  15. 正則入門:兩個匹配模式
  16. 正則入門:匹配單詞邊界
  17. 正則入門:邊界的定義與相對性
  18. 正則入門:匹配非單詞邊界
  19. 正則入門:匹配文本首和尾
  20. 正則入門:子模式
  21. 正則入門:“或”匹配
  22. 正則入門:后向引用文本替換
  23. 正則入門:非獲取匹配
  24. 正則總結:JavaScript中的正則表達式
  25. 正則總結:正則表達式在js中的高級應用

本文地址:http://www.824886.live/librarys/veda/detail/1019,歡迎訪問原出處。

不打個分嗎?

轉載隨意,但請帶上本文地址:

http://www.824886.live/librarys/veda/detail/1019

如果你認為這篇文章值得更多人閱讀,歡迎使用下面的分享功能。
小提示:您可以按快捷鍵 Ctrl + D,或點此 加入收藏。

大家都在看

閱讀一百本計算機著作吧,少年

很多人覺得自己技術進步很慢,學習效率低,我覺得一個重要原因是看的書少了。多少是多呢?起碼得看3、4、5、6米吧。給個具體的數量,那就100本書吧。很多人知識結構不好而且不系統,因為在特定領域有一個足夠量的知識量+足夠良好的知識結構,系統化以后就足以應對大量未曾遇到過的問題。

奉勸自學者:構建特定領域的知識結構體系的路徑中再也沒有比學習該專業的專業課程更好的了。如果我的知識結構體系足以囊括面試官的大部分甚至吞并他的知識結構體系的話,讀到他言語中的一個詞我們就已經知道他要表達什么,我們可以讓他坐“上位”畢竟他是面試官,但是在知識結構體系以及心理上我們就居高臨下。

所以,閱讀一百本計算機著作吧,少年!

《浪潮之巔》 吳軍 (作者)

近一百多年來,總有一些公司很幸運地、有意識或無意識地站在技術革命的浪尖之上。在長達十年甚至幾十年的時間里,它們代表著科技的浪潮,直到下一波浪潮的來臨。從19世紀末算起,AT&T公司、IBM公司、蘋果公司、英特爾公司、微軟公司、思科公司、雅虎公司和Google公司都先后被幸運地推到了浪尖。雖然,它們來自不同的領域,中間有些已經衰落或正在衰落,但是它們都極度輝煌過。吳軍的這本《浪潮之巔》系統地介紹了這些公司成功的本質原因及科技工業一百多年的發展。在這些公司興衰的背后,有著它必然的規律?!独顺敝畮p》不僅講述科技工業的歷史,更重在揭示它的規律性。

更多計算機寶庫...

云南快乐十分走势一定牛 好运彩彩票 今天股票大盘多少点 加拿大快乐八开奖 泳坛夺金组选4中奖规则 好运快3开奖平台 多乐彩票五分钟来奖 一定牛体彩黑龙江十一选5 上海快3遗漏号 甘肃快三一天多少期 贵州快3全天实时计划