出版時間:2010-6 出版社:人民郵電出版社 作者:[美]高瓦特斯 (Goyvaerts, Jan),[美]利維森 (Levithan, Steven) 頁數(shù):457 譯者:郭耀
Tag標(biāo)簽:無
前言
正則表達式在過去十多年間越來越普及。如今所有常用的編程語言都會包含一個強大的正則表達式函數(shù)庫,或者甚至是在語言本身就內(nèi)嵌了對于正則表達式的支持。許多開發(fā)人員都會利用這些正則表達式的功能,在應(yīng)用程序中為用戶提供使用正則表達式對其數(shù)據(jù)進行查找或者過濾的能力。正則表達式真正是無處不在。隨著正則表達式的廣泛采用,出現(xiàn)了許多相關(guān)的著作。大多數(shù)這類書籍都很好地講解了正則表達式的語法,并且還會提供一些例子以及參考文獻。然而,我們還沒有看到有任何一本書能夠面向現(xiàn)實世界中使用的計算機,以及在各種:Internet應(yīng)用中遇到的實際問題,為讀者提供基于正則表達式的解決方案。因此,本書作者Steve和Jan決定寫一本書來填補這種空白。我們特別期望能夠展現(xiàn)給讀者的是:如何使用正則表達式來解決那些對正則表達式經(jīng)驗較少的人們認(rèn)為無法解決的問題,以及軟件純粹主義者認(rèn)為不能用正則表達式來解決的問題。因為如今正則表達式無處不在,所以它們通常可以作為工具,直接被最終用戶使用,而不需要程序員團隊的參與。即使是對于程序員來說,常常也可以在信息檢索和更新的任務(wù)中采用一些正則表達式來節(jié)省大量時間,因為這些功能如果使用過程式代碼來實現(xiàn),可能就會需要幾個小時甚至幾天的時間,也可能會由于需要采用第三方的函數(shù)庫,而不得不經(jīng)過事先審查和經(jīng)理層的審批。不同版本帶來的問題與IT業(yè)界流行的東西一樣,正則表達式也擁有許多種不同的實現(xiàn),以及不同程度的兼容性。這就出現(xiàn)了許多不同的正則表達式流派(flavor),它們在處理一個特定正則表達式的時候并不總是擁有完全一樣的表現(xiàn),有時候甚至?xí)o法正常使用。在許多書中的確也提到了目前存在的不同流派,并且指出了其中的一些區(qū)別。但是,如果某種流派缺少特定功能的時候,它們通常會選擇在這里或那里略掉一些流派,而不是為之提供可替代的解決方案或者是應(yīng)急方案。而當(dāng)你不得不在不同的應(yīng)用程序或者不同程序語言中使用不同的正則表達式流派的時候,就會感到很受挫折。
內(nèi)容概要
本書講解了基于8種常用的編程語言使用正則表達式的經(jīng)典實例。書中提供了上百種可以在實戰(zhàn)中使用的實例,以幫助讀者使用正則表達式來處理數(shù)據(jù)和文本。對于如何使用正則表達式來解決性能不佳、誤報、漏報等常見的錯誤以及完成一些常見的任務(wù),本書給出了涉及基于C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET等編程語言的解決方案?! ”緯淖x者對象是對正則表達式感興趣的軟件開發(fā)人員和系統(tǒng)管理員。本書旨在教會讀者很多新的技巧以及如何避免語言特定的陷阱,讀者可以通過本書提供的實例解決方案庫來解決實踐中的復(fù)雜問題。
作者簡介
Jan Goyvaerts領(lǐng)導(dǎo)著Just Great Software公司,他在這個公司設(shè)計和開發(fā)了一些最流行的正則表達式軟件。他的產(chǎn)品中包括RegexBuddy,世界上唯一可以模擬l5種正則表達式流派特性的正則表達式編輯器,以及PowerGREP,Microsoft Windows平臺上功能最強大的9rep工具。
書籍目錄
第1章 正則表達式簡介 1.1 正則表達式的定義 1.2 使用正則表達式的工具第2章 正則表達式的基本技巧 2.1 匹配字面文本 2.2 匹配不可打印字符 2.3 匹配多個字符之一 2.4 匹配任意字符 2.5 匹配文本行起始和/或文本行結(jié)尾 2.6 匹配整個單詞 2.7 Unicode代碼點、屬性、區(qū)塊和腳本 2.8 匹配多個選擇分支之一 2.9 分組和捕獲匹配中的子串 2.10 再次匹配先前匹配的文本 2.11 捕獲和命名匹配子串 2.12 把正則表達式的一部分重復(fù)多次 2.13 選擇最小和最大重復(fù)次數(shù) 2.14 消除不必要的回溯 2.15 避免重復(fù)逃逸 2.16 檢查一個匹配,但不添加到整體匹配中 2.17 根據(jù)條件匹配兩者之一 2.18 向正則表達式中添加注釋 2.19 在替代文本中添加字面文本 2.20 在替代文本中添加正則匹配 2.21 把部分的正則匹配添加到替代文本中 2.22 把匹配上下文插入到替代文本中第3章 使用正則表達式編程 3.1 在源代碼中使用字面正則表達式 3.2 導(dǎo)入正則表達式函數(shù)庫 3.3 創(chuàng)建正則表達式對象 3.4 設(shè)置正則表達式選項 3.5 檢查是否可以在目標(biāo)字符串中找到匹配 3.6 檢查正則表達式能否整個匹配目標(biāo)字符串 3.7 獲取匹配文本 3.8 決定匹配的位置和長度 3.9 獲取匹配文本的一部分 3.10 獲取所有匹配的列表 3.11 遍歷所有匹配 3.12 在過程代碼中對匹配結(jié)果進行驗證 3.13 在另一個匹配中查找匹配 3.14 替換所有匹配 3.15 使用匹配的子串來替換匹配 3.16 使用代碼中生成的替代文本來替換匹配 3.17 替換另一個正則式匹配中的所有匹配 3.18 替換另一個正則式匹配之間的所有匹配 3.19 拆分字符串 3.20 拆分字符串,保留正則匹配 3.21 逐行查找第4章 合法性驗證和格式化 4.1 E-mail地址的合法性驗證 4.2 北美電話號碼的合法性驗證和格式化 4.3 國際電話號碼的合法性驗證 4.4 傳統(tǒng)日期格式的合法性驗證 4.5 對傳統(tǒng)日期格式進行精確的合法性驗證 4.6 傳統(tǒng)時間格式的合法性驗證 4.7 檢查ISO 8601格式的日期和時間 4.8 限制輸入只能為字母數(shù)字字符 4.9 限制文本長度 4.10 限制文本中的行數(shù) 4.11 肯定響應(yīng)的檢查 4.12 社會安全號碼的合法性驗證 4.13 ISBN的合法性驗證 4.14 ZIP代碼的合法性驗證 4.15 加拿大郵政編碼的合法性驗證 4.16 英國郵政編碼的合法性驗證 4.17 查找使用郵局信箱的地址 4.18 轉(zhuǎn)換姓名格式 4.19 信用卡號碼的合法性驗證 4.20 歐盟增值稅代碼第5章 單詞、文本行和特殊字符 5.1 查找一個特定單詞 5.2 查找多個單詞之一 5.3 查找相似單詞 5.4 查找除某個單詞之外的任意單詞 5.5 查找后面不跟著某個特定單詞的任意單詞 5.6 查找不跟在某個特定單詞之后的任意單詞 5.7 查找臨近單詞 5.8 查找重復(fù)單詞 5.9 刪除重復(fù)的文本行 5.10 匹配包含某個單詞的整行內(nèi)容 5.11 匹配不包含某個單詞的整行 5.12 刪除前導(dǎo)和拖尾的空格 5.13 把重復(fù)的空白替換為單個空格 5.14 對正則表達式元字符進行轉(zhuǎn)義第6章 數(shù)字 6.1 整數(shù) 6.2 十六進制數(shù)字 6.3 二進制數(shù) 6.4 刪除前導(dǎo) 6.5 位于某個特定范圍之內(nèi)的整數(shù) 6.6 在某個特定范圍之內(nèi)的十六進制數(shù) 6.7 浮點數(shù) 6.8 含有千位分隔符的數(shù) 6.9 羅馬數(shù)字第7章 URL、路徑和Internet地址 7.1 URL合法性驗證 7.2 在全文中查找URL 7.3 在全文中查找加引號的URL 7.4 在全文中尋找加括號的URL 7.5 把URL轉(zhuǎn)變?yōu)殒溄印?.6 URN合法性驗證 7.7 通用URL的合法性驗證 7.8 從URL中提取通信協(xié)議方案 7.9 從URL中抽取用戶名 7.10 從URL中抽取主機名 7.11 從URL中抽取端口號 7.12 從URL中抽取路徑 7.13 從URL中抽取查詢 7.14 從URL中抽取片段 7.15 域名合法性驗證 7.16 匹配IPv4地址 7.17 匹配IPv6地址 7.18 Windows路徑的合法性驗證 7.19 分解Windows路徑 7.20 從Windows路徑中抽取盤符 7.21 從UNC路徑中抽取服務(wù)器和共享名 7.22 從Windows路徑中抽取文件夾 7.23 從Windows路徑中抽取文件名 7.24 從Windows路徑中抽取文件擴展名 7.25 去除文件名中的非法字符 第8章 標(biāo)記語言和數(shù)據(jù)交換 8.1 查找XML風(fēng)格的標(biāo)簽 8.2 把標(biāo)簽b替換為strong 8.3 刪掉除em和strong之外的所有XML風(fēng)格標(biāo)簽 8.4 匹配XML名稱 8.5 添加p和br標(biāo)簽將純文本轉(zhuǎn)換為HTML 8.6 在XML風(fēng)格的標(biāo)簽中查找某個特定屬性 8.7 向不包含cellspacing屬性的 table標(biāo)簽中添加該屬性 8.8 刪除XML風(fēng)格的注釋 8.9 在XML風(fēng)格的注釋中查找單詞 8.10 替換在CSV文件中使用的分隔符 8.11 抽取某個特定列中的CSV域 8.12 匹配INI段頭 8.13 匹配INI段塊 8.14 匹配INI名稱-值對
章節(jié)摘錄
插圖:在這最后一章中,我們會著重講解在處理常見的標(biāo)記語言時可能會遇到的常見任務(wù),這些標(biāo)記語言包括:HTMI、XHTML、XML、CSV和INI。雖然我們會假設(shè)讀者對于這些技術(shù)至少已經(jīng)有了基本的了解,但是在本章開始時,我們還是會對每種語言進行簡單的介紹,以確保在進一步講解之前都站在同一起跑線上。這里的描述主要關(guān)注的是在搜索每種格式的數(shù)據(jù)結(jié)構(gòu)時所需要知道的基本語法規(guī)則。當(dāng)我們在后面遇到相關(guān)問題的時候,屆時會再引人更多的細節(jié)。要想準(zhǔn)確處理和操作其中的一些格式雖然從表面上看并不總是很難,然而有時候這樣的任務(wù)會極其復(fù)雜,至少使用正則表達式來處理時是如此。如果需要完成本章中講解的許多任務(wù),特別是當(dāng)在準(zhǔn)確性非常關(guān)鍵的時候(例如,如果你的處理過程可能會涉及系統(tǒng)安全),那么通常最好的選擇應(yīng)當(dāng)是使用專門的分析器和API,而不是采用正則表達式。然而,這些實例依然介紹了許多有用的技巧,并且可以用于許多需要快速處理的任務(wù)。因此,我們先來看一下要處理的到底是什么東西。在本章中會遇到的許多困難都涉及如何處理與下列規(guī)則不一致的情形,這其中可能是可以預(yù)期的情形,也可能是無法預(yù)期的情形。
媒體關(guān)注與評論
“這是一本嚴(yán)謹(jǐn)?shù)闹鳎瑑?nèi)容非常豐富。僅僅閱讀前幾章我就學(xué)到了大量的新技巧?!薄 狽ikolaj Lindberg 計算語言學(xué)家sTTs語音技術(shù)服務(wù)公司“本書為緊迫的問題提供了很好的解決方案。對于實例中所包含的細節(jié)我感到非常震驚?!薄 猌ak Greant 開放技術(shù)倡導(dǎo)者和策略專家Jan Goyvaerts領(lǐng)導(dǎo)專家
編輯推薦
《正則表達式經(jīng)典實例》:每個程序員都會遇到需要使用正則表達式的情況,但是要用好正則表達式卻并不容易?!墩齽t表達式經(jīng)典實例》提供了100多個實例,以幫助讀者使用正則表達式處理數(shù)據(jù)和文本。即使有經(jīng)驗的用戶也經(jīng)常會遇到性能不佳、誤報、漏報等讓人撓頭的錯誤,《正則表達式經(jīng)典實例》對于如何使用正則表達式來解決一些常見的問題給出了按部就班的解決方案,其中包括C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET的實例?!墩齽t表達式經(jīng)典實例》主要包括以下內(nèi)容:通過一個精練的教程理解正則表達式的基本原理和技巧;在不同的編程語言和腳本語言中有效使用正則表達式;學(xué)習(xí)如何對輸入進行合法性檢查和格式化;處理單詞、文本行、特殊字符和數(shù)值;學(xué)習(xí)如何在uRL、路徑、標(biāo)記語言和數(shù)據(jù)交換中使用正則表達式;學(xué)習(xí)更高深的正則表達式特性中的微妙之處;理解在不同語言中正則表達式的API、語法和行為之間的區(qū)別;創(chuàng)建更好的正則表達式來滿足個性化的需求。使用8種編程語言的詳細解決方案,包括一個正則表達式簡明教程
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載