内容簡介
随着互聯網的迅速發展,幾乎所有工具軟件和程序語言都支持的正則表達式也變得越來越強大和易于使用。《精通正則表達式(第3版)》是講解正則表達式的經典之作。《精通正則表達式(第3版)》主要講解了正則表達式的特性和流派、匹配原理、優化原則、實用訣竅以及調校措施,并詳細介紹了在Perl、Java、.NET、PHP中正則表達式的用法。
《精通正則表達式(第3版)》自第1版開始着力于教會讀者“以正則表達式來思考”,來讓讀者真正“精通”正則表達式。該版對PHP的相關内容、Java1.5和Java1.6的新特性作了可觀的擴充講解。任何有機會使用正則表達式的讀者都将因《精通正則表達式(第3版)》而受益匪淺。
各種語言和工具的功能比較
正則引擎的工作原理
優化(能節省大量的時間)
準确匹配期望的文本
針對具體語言的章節
《精通正則表達式(第3版)》,以明晰輕松的筆調向程序員深入淺出地講解複雜的知識,并給出了現實世界中複雜問題的解決辦法,讀者能夠立刻運用書中豐富的知識,巧妙而高效地解決各種問題。
圖書目錄
前言
|
第1章正則表達式入門
|
解決實際問題
|
作為編程語言的正則表達式
|
以文件名做類比
|
以語言做類比
|
正則表達式的思維框架
|
對于有部分經驗的讀者
|
檢索文本文件:Egrep
|
Egrep元字符
|
行的起始和結束
|
字符組
|
用點号匹配任意字符
|
多選結構
|
忽略大小寫
|
單詞分界符
|
小結
|
可選項元素
|
其他量詞:重複出現
|
括号及反向引用
|
神奇的轉義
|
基礎知識拓展
|
語言的差異
|
正則表達式的目标
|
更多的例子
|
正則表達式術語彙總
|
改進現狀
|
總結
|
一家之言
|
第2章入門示例拓展
|
關于這些例子
|
Perl簡單入門
|
使用正則表達式匹配文本
|
向實用的程序前進
|
成功匹配的副作用
|
錯綜複雜的正則表達式
|
暫停片刻
|
使用正則表達式修改文本
|
例子:公函生成程序
|
舉例:修整股票價格
|
自動的編輯操作
|
處理郵件的小工具
|
用環視功能為數值添加逗号
|
Text-to-HTML轉換
|
回到單詞重複問題
|
第3章正則表達式的特性和流派概覽
|
在正則的世界中漫步
|
正則表達式的起源
|
最初印象
|
正則表達式的注意事項和處理方式
|
集成式處理
|
程序式處理和面向對象式處理
|
查找和替換
|
其他語言中的查找和替換
|
注意事項和處理方式:小結
|
字符串,字符編碼和匹配模式
|
作為正則表達式的字符串
|
字符編碼
|
Unicode
|
正則模式和匹配模式
|
常用的元字符和特性
|
字符表示法
|
字符組及相關結構
|
錨點及其他“零長度斷言”
|
注釋和模式量詞
|
分組,捕獲,條件判斷和控制
|
高級話題引導
|
第4章:表達式的匹配原理
|
發動引擎
|
兩類引擎
|
新的标準
|
正則引擎的分類
|
幾句題外話
|
測試引擎的類型
|
匹配的基礎
|
關于範例
|
規則1:優先選擇最左端的匹配結果
|
引擎的構造
|
規則2:标準量詞是匹配優先的
|
表達式主導與文本主導
|
NFA引擎:表達式主導
|
DFA引擎:文本主導
|
第一想法:比較NFA與DFA
|
回溯
|
真實世界中的例子:面包屑
|
回溯的兩個要點
|
備用狀态
|
回溯與匹配優先
|
關于匹配優先和回溯的更多内容
|
匹配優先的問題
|
多字符“引文”
|
使用忽略優先量詞
|
匹配優先和忽略優先都期望獲得匹配
|
匹配優先、忽略優先和回溯的要旨
|
占有優先量詞和固化分組
|
占有優先量詞,?+、*+、++和{m,n}+
|
環視的回溯
|
多選結構也是匹配優先的嗎
|
發掘有序多選結構的價值
|
NFA、DFA和POSIX
|
最左最長規則
|
POSIX和最左最長規則
|
速度和效率
|
小結:NFA與DFA的比較
|
總結
|
第5章:正則表達式實用技巧
|
正則表達式的平衡法則
|
若幹簡單的例子
|
匹配連續行(續前)
|
匹配IP地址
|
處理文件名
|
匹配對稱的括号
|
防備不期望的匹配
|
匹配分隔符之内的文本
|
了解數據,做出假設
|
去除文本首尾的空白字符
|
HTML相關範例
|
匹配HTMLTag
|
匹配HTMLLink
|
檢查HTTPURL
|
驗證主機名
|
在真實世界中提取URL
|
擴展的例子
|
保持數據的協調性
|
解析CSV文件
|
第6章:打造高效正則表達式
|
典型示例
|
稍加修改——先邁最好使的腿
|
效率vs準确性
|
繼續前進——限制匹配優先的作用範圍
|
實測
|
全面考查回溯
|
POSIXNFA需要更多處理
|
無法匹配時必須進行的工作
|
看清楚一點
|
多選結構的代價可能很高
|
性能測試
|
理解測量對象
|
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運算符的不同用途
|
叠代匹配:ScalarContext,不使用/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
|
ThePattern.compile()Factory
|
Pattern的matcher方法
|
Matcher對象
|
應用正則表達式
|
查詢匹配結果
|
簡單查找-替換
|
高級查找-替換
|
原地查找-替換
|
Matcher的檢索範圍
|
方法鍊
|
構建掃描程序
|
Matcher的其他方法
|
Pattern的其他方法
|
Pattern的split方法,單個參數
|
Pattern的split方法,兩個參數
|
拓展示例
|
為ImageTag添加寬度和高度屬性
|
對于每個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
|
preg_replace_callback
|
preg_split
|
preg_grep
|
preg_quote
|
“缺失”的preg函數
|
preg_regex_to_pattern
|
對未知的Pattern參數進行語法檢查
|
對未知正則表達式進行語法檢查
|
遞歸的正則表達式
|
匹配嵌套括号内的文本
|
不能回溯到遞歸調用之内
|
匹配一組嵌套的括号
|
PHP效率
|
模式修飾符S:“研究”
|
擴展示例
|
用PHP解析CSV
|
檢查taggeddata的嵌套正确性
|
索引
|
編輯推薦
《精通正則表達式(第3版)》講解正則表達式,這種工具能夠提高工作效率、讓生活變得更輕松。精心調校後的正則表達式隻需要十多秒就能完成以前數小時才能完成的枯燥任務。如今,正則表達式已經成為衆多語言及工具——Perl、PHP、Java、Python、Ruby、MysQL、VB-NET和c#(以及.NETFramework中的任何語言)——中的标準特性,依靠它,你能以之前完全不敢設想的方式進行複雜而精巧的文本處理。十年三版,再顯王者風範,近30年開發經驗的智慧結晶,深入理解正則表達式,徹底修煉基本功,全球第一本全面深入講解正則表達式的經典巨著,《程序員》雜志技術主編孟岩鼎力推薦。
作品評價
《精通正則表達式》是系統學習正則表達式的唯一最權威著作。任何時候,任何地方,隻要提到正則表達式著作,人們都會提到這本書。該書質量之高,聲譽之盛,使得幾乎沒有人企圖挑戰它的地位,從而在正則表達式圖書領域形成了獨特的“一夫當關”的局面,稱其為正則表達式聖經,絕對當之無愧。
——《程序員》雜志技術主編孟岩
作者簡介
作者:(美國)佛瑞德(Friedl.J.E.F)譯者:餘晟
Jeffrey E.F.Friedl生長于俄亥俄州Rootstown的鄉村,小時候希望成為天文學家,直到有一天他發現了閑置在化學實驗室角落裡的TRS-80 Model I(裝備了整整16KB RAM)。1980年他終于開始使用Unix(和正則表達式)。在肯特(Kent)大學和新罕布什爾(New Hampshire)大學分别獲得計算機學士和碩士學位之後,他在日本京都工作了8年,為歐姆龍公司(Omron Corporation)進行核心開發,1997年遷居矽谷,在當時還不為人知的Yahoo!用正則表達式處理财經新聞和數據。2004年4月他偕妻兒返回京都。
Friedl的閑暇時間很充裕,這時候他喜歡與妻子Fumie和3歲的活蹦亂跳的兒子Anthony一起。他還喜歡拍攝遍布京都的美景,照片在他的blog上
相關詞條
相關搜索
其它詞條