精通正則表達式(第3版)

精通正則表達式(第3版)

佛瑞德創作的書籍
《精通正則表達式(第3版)》是由美國作家佛瑞德創作的書籍,于2009年7月1日電子工業出版社出版。[1]該書講述了正則表達式的特性和流派、匹配原理、優化原則、實用訣竅以及調校措施,并詳細介紹了在Perl、Java、.NET、PHP中正則表達式的用法。
  • 書名:精通正則表達式(第3版)
  • 别名:
  • 作者:佛瑞德
  • 類别:
  • 原作品:Mastering regular expressions
  • 譯者:餘晟
  • 出版社:電子工業出版社
  • 頁數:515
  • 定價:75
  • 開本:16
  • 裝幀:平裝
  • ISBN:9787121046841

内容簡介

随着互聯網的迅速發展,幾乎所有工具軟件和程序語言都支持的正則表達式也變得越來越強大和易于使用。《精通正則表達式(第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上

相關詞條

相關搜索

其它詞條