發表於2024-11-17
《精通正則錶達式(第3版)》是正則這一萬妙法門的經典名著,享譽全球,中文版由IT世界的翻譯奇纔兼資深程序員餘晟翻譯。
《精通正則錶達式(第3版)》隨著互聯網的迅速發展,幾乎所有工具軟件和程序語言都支持的正則錶達式也變得越來越強大和易於使用。《精通正則錶達式(第3版)》是講解正則錶達式的經典之作。
《精通正則錶達式(第3版)》主要講解瞭正則錶達式的特性和流派、匹配原理、優化原則、實用訣竅以及調校措施,並詳細介紹瞭正則錶達式在perl、java、.net、php中的用法。
★“如果你的工作需要用到正則錶達式(即便你已經有本很不錯的關於開發語言的書),我還是要嚮你強烈推薦本書。”
——Dr.ChrisBrownLinuxFormat
★“毫不誇張地說,《精通正則錶達式(第3版)》是學習該工具的優佳選擇,也是每個程序員必備的傑作。”
——JasonMenard.JavaRanch
★“所有關於正則錶達式的書中,找不到比這更好的瞭。”
——ZakGreantPlanetPHP
前言
第1章:正則錶達式入門
解決實際問題
作為編程語言的正則錶達式
以文件名做類比
以語言做類比
正則錶達式的知識框架
對於有部分經驗的讀者
檢索文本文件:egrep
egrep元字符
行的起始和結束
字符組
用點號匹配任意字符
多選結構
忽略大小寫
單詞分界符
小結
可選項元素
其他量詞:重復齣現
括號及反嚮引用
.神奇的轉義
基礎知識拓展
語言的差異
正則錶達式的目標
更多的例子
正則錶達式術語匯總
改進現狀
總結
一傢之言
第2章:入門示例拓展
關於這些例子
perl簡短入門
使用正則錶達式匹配文本
嚮更實用的程序前進
成功匹配的副作用
錯綜復雜的正則錶達式
暫停片刻
使用正則錶達式修改文本
例子:公函生成程序
舉例:修整股票價格
自動的編輯操作
處理郵件的小工具
用環視功能為數值添加逗號
text-to-html轉換
迴到單詞重復問題
第3章:正則錶達式的特性和流派概覽
在正則的世界中漫步
正則錶達式的起源
最初印象
正則錶達式的注意事項和處理方式
集成式處理
程序式處理和麵嚮對象式處理
查找和替換
其他語言中的查找和替換
注意事項和處理方式:小結
字符串,字符編碼和匹配模式
作為正則錶達式的字符串
字符編碼
正則模式和匹配模式
常用的元字符和特性
字符錶示法
字符組及相關結構
錨點及其他“零長度斷言”
注釋和模式量詞
分組,捕獲,條件判斷和控製
高級話題引導
第4章:錶達式的匹配原理
發動引擎
兩類引擎
新的標準
正則引擎的分類
幾句題外話
測試引擎的類型
匹配的基礎
關於範例
規則1:優先選擇最左端的匹配結果
引擎的構造
規則2:標準量詞是匹配優先的
錶達式主導與文本主導
nfa引擎:錶達式主導
dfa引擎:文本主導
第一想法:比較nfa與dfa
迴溯
真實世界中的例子:麵包屑
迴溯的兩個要點
備用狀態
迴溯與匹配優先
關於匹配優先和迴溯的更多內容
匹配優先的問題
多字符“引文”
使用忽略優先量詞
匹配優先和忽略優先都期望獲得匹配
匹配優先、忽略優先和迴溯的要旨
占有優先量詞和固化分組
占有優先量詞,?+、*+、++和{m,n}+
環視的迴溯
多選結構也是匹配優先的嗎
發掘有序多選結構的價值
nfa、dfa和posix
最左最長規則
posix和最左最長規則
速度和效率
小結:nfa與dfa的比較
總結
第5章:正則錶達式實用技巧
正則錶達式的平衡法則
若乾簡單的例子
匹配連續行(續前)
匹配ip地址
處理文件名
匹配對稱的括號
防備不期望的匹配
匹配分隔符之內的文本
瞭解數據,做齣假設
去除文本首尾的空白字符
html相關範例
匹配html tag
匹配html link
檢查http url
驗證主機名
在真實世界中提取url
擴展的例子
保持數據的協調性
解析csv文件
第6章:打造高效正則錶達式
典型示例
稍加修改——先邁最好使的腿
效率vs準確性
繼續前進——限製匹配優先的作用範圍
實測
全麵考查迴溯
posix nfa需要更多處理
無法匹配時必須進行的工作
看清楚一點
多選結構的代價可能很高
性能測試..
理解測量對象
php測試
java測試
vb.net測試
ruby測試
python測試
tcl測試
常見優化措施
有得必有失
優化各有不同
正則錶達式的應用原理
應用之前的優化措施
通過傳動裝置進行優化
優化正則錶達式本身
提高錶達式速度的訣竅
常識性優化
將文字文本獨立齣來
將錨點獨立齣來
忽略優先還是匹配優先?具體情況具體分析
拆分正則錶達式
模擬開頭字符識彆
使用固化分組和占有優先量詞
主導引擎的匹配
消除循環
方法1:依據經驗構建正則錶達式
真正的“消除循環”解法
方法2:自頂嚮下的視角
方法3:匹配主機名
觀察
使用固化分組和占有優先量詞
簡單的消除循環的例子
消除c語言注釋匹配的循環
流暢運轉的錶達式
引導匹配的工具
引導良好的正則錶達式速度很快
完工
總結:開動你的大腦
第7章:perl
作為語言組件的正則錶達式
perl的長處
perl的短處
perl的正則流派
正則運算符和正則文字
正則文字的解析方式
正則修飾符
正則錶達式相關的perl教義
錶達式應用場閤
動態作用域及正則匹配效應
匹配修改的特殊變量
qr/…/運算符與regex對象
構建和使用regex對象
探究regex對象
用regex對象提高效率
match運算符
match的正則運算元
指定目標運算元
match運算符的不同用途
迭代匹配:scalar context,不使用/g
match運算符與環境的關係
substitution運算符
運算元replacement
/e修飾符
應用場閤與返迴值
split運算符
split基礎知識
返迴空元素
split中的特殊regex運算元
split中帶捕獲型括號的match運算元
巧用perl的專有特性
用動態正則錶達式結構匹配嵌套結構
使用內嵌代碼結構
在內嵌代碼結構中使用local函數
關於內嵌代碼和my變量的忠告
使用內嵌代碼匹配嵌套結構
正則文字重載
正則文字重載的問題
模擬命名捕獲
效率
辦法不隻一種
錶達式編譯、/o修飾符、qr//和效率
理解“原文”副本
study函數
性能測試
正則錶達式調試信息
結語
第8章:java
java的正則流派
java對p{…}和p{…}的支持
unicode行終結符
使用java.util.regex
the pattern.compile() factory
pattern的matcher方法
matcher對象
應用正則錶達式
查詢匹配結果
簡單查找-替換
高級查找-替換
原地查找-替換
matcher的檢索範圍
方法鏈
構建掃描程序
matcher的其他方法
pattern的其他方法
pattern的split方法,單個參數
pattern的split方法,兩個參數
拓展示例
為image tag添加寬度和高度屬性
對於每個matcher,使用多個pattern校驗html
解析csv文檔
java版本差異
1.4.2和1.5.0之間的差異
1.5.0和1.6之間的差異
第9章:.net
.net的正則流派
對於流派的補充
使用.net正則錶達式
正則錶達式快速入門
包概覽
核心對象概覽
核心對象詳解
創建regex對象
使用regex對象
使用match對象
使用group對象
靜態“便捷”函數
正則錶達式緩存
支持函數
.net高級話題
正則錶達式裝配件
匹配嵌套結構
capture對象
第10章:php
php的正則流派
preg函數接口
“pattern”參數
preg函數羅列
preg_match
preg_match_all
preg_replace
……
一種類型的環視叫“順序環視(lookahead)”,作為錶達式的一部分,順序環視順序(從左至右)查看文本,嘗試匹配子錶達式,如果能夠匹配,就返迴匹配成功信息。肯定型順序環視(positive lookahread)用特殊的序列(?=…)來錶示,例如(?=d),它錶示如果當前位置右邊的字符是數字則匹配成功。另一種環視稱為逆序環視,它逆序(從右嚮左)查看文本。它用特殊的序列(?<=…)錶示,例如(?<=d),如果當前位置的左邊有一位數字,則匹配成功(也就是說,緊跟在數字後麵的位置)。
環視不會“占用”字符
在理解順序環視和其他環視功能時需要特彆注意一點,即在檢查子錶達式能否匹配的過程中,它們本身不會“占用”任何文本。這可能有點難懂,所以我準備瞭下麵的例子。正則錶達式Jeffrey匹配:
但同樣的正則錶達式,如果使用順序環視功能,即(?=Jeffrey),則匹配標記的位置:
順序環視會檢查子錶達式能否匹配,但它隻尋找能夠匹配的位置,而不會真正“占用”這些字符。不過,把順序環視和真正匹配字符的部分——例如Jeff——結閤起來,我們能得到比單純的Jeff更精確的結果。結閤之後的正則錶達式是(?=Jeffrey)Jeff,下一頁的圖說明,它隻能匹配“Jeffrey”這個單詞中的“Jeff”。它能夠匹配:
在此處它的匹配和單純的Jeff一樣,但是下麵的情況不會匹配:
Jeff自己能夠匹配這一行,但是因為不存在(?=Jeffrey)能夠匹配的位置,整個錶達式就無法匹配。現在環視的好處還看得不是很明顯,但是請不用擔心,現在我們隻需要關心順序環視的原理——我們很快會遇到能夠充分展現其價值的例子。
……
本書關注的是一種強大的工具——“正則錶達式”。它將教會讀者如何使用正則錶達式解決各種問題,以及如何充分使用支持正則錶達式的工具和語言。許多關於正則錶達式的文檔都沒有介紹這種工具的能力,而本書的目的正是讓讀者“精通”正則錶達式。許多種工具都支持正則錶達式(文本編輯器、文字處理軟件、係統工具、數據庫引擎,等等),不過,要想充分挖掘正則錶達式的能力,還是應當將它作為編輯語言的一部分。例如Java、JScript、VisualBasic、VBScript、JavaScript、ECMAScript、C、C++、C#、elisp、Perl、Python、Tcl、Ruby、PHP、sed和awk。事實上,在一些用上述語言編寫的程序中,正則錶達式扮演瞭極其重要的角色。正則錶達式能夠得到眾多語言和工具的支持是有原因的:它們極其有用。從較低的層麵上來說,正則錶達式描述的是一串文本(achunkoftext)的特徵。讀者可以用它來驗證用戶輸入的數據,或者也可以用它來檢索大量的文本。從較高的層麵上來說,正則錶達式容許用戶掌控他們自己的數據——控製這些數據,讓他們為自己服務。掌握正則錶達式,就是掌握自己的數據。
本書的價值TheNeedforThisBook
本書的第1版寫於1996年,以滿足當時存在的需求。那時還沒有關於正則錶達式的詳盡文檔,所以它的大部分能力還沒有被發掘齣來。正則錶達式文檔倒是存在,但它們都立足於“低層次視角”。我認為,那種情況就好像是教一些人英文字母,然後就指望他們會說話。第2版與第1版間隔瞭五年半的時間,這期間,互聯網迅速流行起來,正則錶達式的形式也有瞭極大的擴張,這或許並不是巧閤。幾乎所有工具軟件和程序語言支持的正則錶達式也變得更加強大和易於使用。Perl、Python、Tcl、Java和VisualBasic都提供瞭新的正則支持。新齣現的支持內建正則錶達式的語言,例如PHP、Ruby、C#,也已經發展壯大,流行開來。在這段時間裏,本書的核心——如何真正理解正則錶達式,以及如何使用正則錶達式——仍然保持著它的重要性和參考價值。不過,第1版已經逐漸脫離瞭時代,必須加以修訂,纔能適應新的語言和特性,也纔能對應正則錶達式在互聯網世界中越來越重要的地位。第2版齣版於2002年,這一年的裏程碑是java.util.regex、Microsoft.NETFramework和Perl5.8的誕生。第2版全麵覆蓋瞭這些內容。關於第2版,我唯一的遺憾就是,它沒有提及PHP。自第2版誕生以來的4年裏,PHP的重要性一直在增加,所以,彌補這一缺憾是非常迫切的。第3版在前麵的章節中增加瞭PHP的相關內容,並專門為理解和應用PHP的正則錶達式增加瞭一章全新的內容。另外,該版對Java的章節也進行瞭修訂,做瞭可觀的擴充,反映瞭Java1.5和Java1.6的新特性。
目標讀者IntendedAudience
任何有機會使用正則錶達式的人,都會對本書感興趣。如果您還不瞭解正則錶達式能提供的強大功能,這本書展示的全新世界將會讓您受益匪淺。即使您認為自己已經是掌握正則錶達式的高手瞭,這本書也能夠深化您的認識。第1版麵世後,我時常會收到讀者的電子郵件反映說“讀這本書之前,我以為自己瞭解正則錶達式,但現在我纔真正弄明白”。以與文本打交道為工作(如Web開發)的程序員將會發現,這本書絕對稱得上是座金礦,因為其中蘊藏瞭各種細節、暗示、講解,以及能夠立刻投入到實用中的知識。在其他任何地方都難以找到這樣完整而詳盡的資料。正則錶達式是一種思想——各種工具以各種方式(數目遠遠超過本書的列舉)來實現它。如果讀者理解瞭正則錶達式的基本思想,掌握某種特殊的實現就是易如反掌的事情。本書關注的就是這種思想,所以其中的許多知識並不受例子中所用的工具軟件和語言的束縛。
如何閱讀HowtoReadThisBook
這本書既是教程,又是參考手冊,還可以當故事看,這取決於讀者的閱讀方式。熟悉正則錶達式的讀者可能會覺得,這本書馬上就能當作一本詳細的參考手冊,讀者可以直接跳到自己需要的章節。不過,我並不鼓勵這樣做。要想充分利用這本書,可以把前6章作為故事來讀。我發現,某些思維習慣和思維方式的確有助於完整的理解,不過最好還是從這幾章的講解中學習它們,而不是僅僅記住其中的幾張列錶。故事是這樣的,前6章是後麵4章——包括Perl、Java、.NET和PHP——的基礎。為瞭幫助讀者理解每一部分,我交叉使用各章的知識,為瞭提供盡可能方便的索引,我投入瞭大量的精力(全書中有超過1200處交叉引用,它們用符號加頁碼的形式標注)。在讀完整個故事以前,最好不要把本書作為參考手冊。在開始閱讀之前,讀者可以參考其中的錶格,例如第92頁的圖錶,想象它代錶瞭需要掌握的相關信息。但是,還有大量背景信息沒有包含在圖錶中,而是隱藏在故事裏。讀者閱讀完整個故事之後,會對這些問題有個清晰的概念,哪些能夠記起來,哪些需要溫習。
精通正則錶達式(第3版) 下載 mobi pdf epub txt 電子書 格式 2024
精通正則錶達式(第3版) 下載 mobi epub pdf 電子書icloud,旮旯,派送我,我我會
評分書挺厚的,
評分正則錶達式的經典之作
評分時間不夠,隻看瞭一點點,內容講的比較詳細
評分總之兩分是給作者的
評分本人乃是華山派第二十一代傳人,恨天無把怨地無環名震寰宇笑傲江湖獨步武林橫行霸道打遍天下隻有兩個敵手又令貪官驚魂喪膽惡霸鬼哭狼嚎之武林第三高高手江湖人稱多情浪子驀然迴首溫柔一刀——蘇銘是也。
評分好好好好好好
評分還不錯還不錯還不錯
評分好書,需要花心思去看
精通正則錶達式(第3版) mobi epub pdf txt 電子書 格式下載 2024