《精通正則錶達式(第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版)》,主要是想係統地梳理一下我對正則的理解。這本書給我的第一印象是它的嚴謹性。它不是那種“速成”或者“掃盲”的書,而是真正緻力於讓你“精通”。作者的講解邏輯非常清晰,層層遞進,從概念的引入到細節的剖析,再到高級特性的講解,都做得非常到位。我尤其欣賞書中對不同引擎(比如PCRE、Python、Java等)的差異性做瞭說明,這對於跨平颱開發或者在不同環境中應用正則的人來說,簡直是福音。很多時候,我們寫的正則在某個環境下能工作,換個環境就失效,原因就在於引擎的細微差彆。這本書把這些“坑”都給填上瞭。此外,書中關於迴溯、性能優化等更深層次的話題也有涉及,這讓我意識到,掌握正則錶達式不僅僅是記住語法,更是要理解其背後的工作機製。雖然有些地方需要反復琢磨,但這種挑戰性的學習過程,恰恰是提升技能的關鍵。
評分一直以來,我對正則錶達式的理解都停留在“會用就行”的層麵,每次遇到稍微復雜一點的匹配,就感覺像是在摸著石頭過河,結果往往是試錯成本很高。這次購買《精通正則錶達式(第3版)》,就是想徹底改變這種局麵。這本書的編排結構非常閤理,從基礎的字符匹配、量詞、分組,到更高級的斷言、原子組、遞歸匹配,幾乎涵蓋瞭正則錶達式的所有重要概念。我尤其喜歡書中對每一個概念的解釋都非常透徹,並且配有大量的示例,這些示例不僅能夠幫助我理解概念本身,更能展示齣這個概念在實際應用中的威力。例如,書中關於捕獲組和反嚮引用的講解,讓我徹底理解瞭如何在匹配過程中引用之前捕獲的內容,這對於復雜的文本替換和提取非常有用。這本書不僅僅是枯燥的語法堆砌,它更像是一位經驗豐富的老師,循序漸進地引導你掌握正則錶達式的精髓。我迫不及待地想把書中的知識應用到我的日常開發中,相信它會極大地提升我的編程效率和代碼質量。
評分這本書的包裝真的很有質感,沉甸甸的,拿在手裏就覺得分量十足。我之前對正則錶達式一直都是模模糊糊的,隻知道有個“正則”,用的時候就像是在大海撈針,每次都要查半天,而且寫齣來的錶達式也總是齣各種奇怪的錯誤,結果就是效率低下,還容易引發bug。這次下決心要好好學學,就選擇瞭這本《精通正則錶達式(第3版)》。雖然我還沒有深入閱讀,但光是翻閱一下目錄和前言,就能感受到這本書的專業性和深度。它不僅僅是講解語法,更像是帶領你一步步解剖正則錶達式的靈魂。從最基礎的概念講起,比如字符、量詞、分組,然後循序漸進地深入到更復雜的概念,比如前瞻、後顧、捕獲組的引用等等。我看到裏麵有大量的實例,而且這些實例都不是那種簡單的“hello world”,而是貼近實際開發場景的應用,比如日誌分析、數據提取、文本校驗等等。這對我來說太重要瞭,因為我最怕的就是學瞭半天,結果發現和實際工作完全脫節。而且,書的排版也很好,清晰明瞭,不會讓人眼花繚亂。感覺這本書會成為我案頭必備的參考書,以後再也不用對著網上的零散信息抓耳撓腮瞭。
評分作為一個對編程語言特性充滿好奇的開發者,我一直認為正則錶達式是隱藏在編程語言背後的一門強大而又神秘的學問。而《精通正則錶達式(第3版)》這本書,就像是為我打開瞭這扇神秘的大門。它並沒有簡單地羅列語法規則,而是深入剖析瞭正則錶達式的工作原理,包括匹配過程中的迴溯機製,以及不同引擎在實現上的差異。這對我理解為什麼某些正則錶達式會工作,而另一些會“卡死”提供瞭理論基礎。書中關於非貪婪匹配、原子組、以及如何構建更高效、更易讀的正則錶達式的講解,讓我受益匪淺。我過去常常為瞭實現一個功能而寫齣難以理解的“意大利麵條式”正則,讀完這本書,我纔意識到原來還可以有更優雅、更簡潔的錶達方式。而且,書中還提供瞭很多關於如何調試和優化正則錶達式的建議,這對於提升我的編程實踐能力非常有幫助。這本書的深度和廣度都讓我印象深刻,它讓我從一個“會用”正則的用戶,蛻變為一個“懂”正則的開發者。
評分作為一名數據分析師,我每天都要麵對海量的數據,其中很多都需要從非結構化文本中提取有效信息。之前我都是依賴一些腳本或者簡單的文本處理工具,效率非常低下,而且容易齣錯。在同事的推薦下,我入手瞭這本《精通正則錶達式(第3版)》。這本書的內容對我來說簡直是量身定做的。它不僅僅講解瞭如何寫齣正確的正則錶達式,更重要的是教會瞭我如何用正則錶達式來解決實際問題。書中的案例非常豐富,涵蓋瞭各種常見的數據提取場景,比如從HTML標簽中提取內容、從日誌文件中解析齣關鍵信息、從配置文件中讀取配置項等等。最讓我驚喜的是,書中還講解瞭一些關於正則錶達式性能優化的技巧,這對於處理大規模數據至關重要。我知道,一個低效的正則錶達式可能會讓我的程序運行數小時甚至數天。這本書讓我看到瞭用正則錶達式提升工作效率的巨大潛力,也讓我對文本處理有瞭更深刻的認識。雖然我還在學習的初級階段,但已經能感受到它帶來的改變。
評分好書好啊好好哦啊哦啊哦啊公司用書很好很好,大傢都愛看!
評分包裝有些破損
評分學習技術,趁著優惠下單!非常好的書!
評分好好好好高好高還好還好哈
評分好好好好高好高還好還好哈
評分很好很好很好很好
評分書目前還沒看,印刷還可以,經典
評分當字典用
評分這本沒有封裝,是散裝的,裏麵有摺角。。。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有