#### 內容簡介
《正則指引》針對作者在開發中遇到的實際問題,以及其他開發人員咨詢的問題,總結出一套使用正則表達式解題的辦法,并通過具體的例子指導讀者拆解、分析問題。全書分為三大部分:
* 第一部分主要講解正則表達式的基礎知識,涵蓋了常見正則表達式中的各種功能和結構;
* 第二部分主要講解關于正則表達式的更深入的知識,詳細探討了編碼問題、匹配原理、解題思路;
* 第三部分將之前介紹的各種知識落實到6種常用語言.NET、Java、JavaScript、PHP、Python、Ruby中,不但詳細介紹了語言中正則表達式的用法,更點明了版本之間的細微差異,既可以作為專門學習的教材,也可以作為有用的參考手冊。
本書適合經常需要進行文本處理(比如日志分析或網絡運維)的技術人員、熟悉常用開發語言的程序員,以及已經對正則表達式有一定了解的讀者閱讀。
#### 作者簡介
余晟,畢業于計算機系,副修中文,非正統型技術愛好者。曾任抓蝦網、銀杏泰克主力程序員,盛大創新院高級研究員,現任華南某電商公司技術部總監。堅信計算機可以無限延伸人的能力,前提是人必須理解計算機的邏輯,所以對任何技術都不應該淺嘗輒止,僅僅滿足于“會用”。
已經翻譯出版《精通正則表達式(第3版)》和《技術領導之路》,審閱《軟件架構師應該知道的97件事》和《REST in Practice中文版》。
#### 目錄 · · · · · ·
第一部 分
第1章 字符組
1.1 普通字符組
1.2 關于Python的基礎知識
1.3 普通字符組(續)
1.4 元字符與轉義
1.5 排除型字符組
1.6 字符組簡記法
1.7 字符組運算
1.8 POSIX字符組
第2章 量詞
2.1 一般形式
2.2 常用量詞
2.3 數據提取
2.4 點號
2.5 濫用點號的問題
2.6 忽略優先量詞
2.7 轉義
第3章 括號
3.1 分組
3.2 多選結構
3.3 引用分組
3.3.1 反向引用
3.3.2 各種引用的記法
3.3.3 命名分組
3.4 非捕獲分組
3.5 補充
3.5.1 轉義
3.5.2 URL Rewrite
3.5.3 一個例子
第4章 斷言
4.1 單詞邊界
4.2 行起始/結束位置
4.3 環視
4.4 補充
4.4.1 環視的價值
4.4.2 環視與分組編號
4.4.3 環視的支持程度
4.4.4 環視的組合
4.4.5 斷言和反向引用之間的關系
第5章 匹配模式
5.1 不區分大小寫模式
5.1.1 模式的指定方式
5.2 單行模式
5.3 多行模式
5.4 注釋模式
5.5 補充
5.5.1 更多的模式
5.5.2 修飾符的作用范圍
5.5.3 失效修飾符
5.5.4 模式與反向引用
5.5.5 沖突策略
5.5.6 哪種方式更好
第6章 其他
6.1 轉義
6.1.1 字符串轉義與正則轉義
6.1.2 元字符的轉義
6.1.3 徹底消除元字符的特殊含義
6.1.4 字符組中的轉義
6.2 正則表達式的處理形式
6.2.1 函數式處理
6.2.2 面向對象式處理
6.2.3 比較
6.2.4 線程安全性
6.3 表達式中的優先級
第二部 分
第7章 Unicode
7.1 關于編碼
7.2 推薦使用Unicode編碼
7.3 Unicode匹配規則
7.4 單詞邊界
7.5 碼值
7.6 Unicode屬性
7.6.1 Unicode Property
7.6.2 Unicode Block
7.6.3 Unicode Script
7.7 Unicode屬性列表
7.7.1 Unicode Property
7.7.2 Unicode Block
7.7.3 Unicode Script
7.8 POSIX字符組
第8章 匹配原理
8.1 有窮自動機
8.2 正則表達式的匹配過程
8.3 回溯
8.4 NFA和DFA
第9章 常見問題的解決思路
9.1 關于元素的三種邏輯
9.1.1 必須出現
9.1.2 可能出現
9.1.3 不能出現
9.2 正則表達式的常見操作
9.2.1 提取
9.2.2 驗證
9.2.3 替換
9.2.4 切分
9.3 正則表達式的優化建議
9.3.1 使用緩存
9.3.2 盡量準確地表達意圖
9.3.3 避免重復匹配
9.3.4 獨立出文本和錨點
9.4 別過分依賴正則表達式
9.4.1 徹底放棄字符串操作
9.4.2 思維定勢
9.4.3 正則表達式可以匹配各種文本
第三部 分
第10章 .NET
10.1 預備知識
10.2 正則功能詳解
10.2.1 列表
10.2.2 字符組
10.2.3 Unicode屬性
10.2.4 字符組簡記法
10.2.5 單詞邊界
10.2.6 行起始/結束位置
10.2.7 環視
10.2.8 匹配模式
10.2.9 捕獲分組的引用
10.3 正則API簡介
10.3.1 Regex
10.3.2 Match
10.4 常用操作示例
10.4.1 驗證
10.4.2 提取
10.4.3 替換
10.4.4 切分
第11章 Java
11.1 預備知識
11.2 正則功能詳解
11.2.1 列表
11.2.2 字符組
11.2.3 Unicode屬性
11.2.4 字符組簡記法
11.2.5 單詞邊界
11.2.6 行起始/結束位置
11.2.7 環視
11.2.8 匹配模式
11.2.9 純文本模式
11.2.10 捕獲分組的引用
11.3 正則API簡介
11.3.1 Pattern
11.3.2 Matcher
11.3.3 String
11.4 常用操作示例
11.4.1 驗證
11.4.2 提取
11.4.3 替換
11.4.4 切分
第12章 JavaScript
12.1 預備知識
12.2 正則功能詳解
12.2.1 列表
12.2.2 字符組
12.2.3 字符組簡記法
12.2.4 單詞邊界
12.2.5 行起始/結束位置
12.2.6 環視
12.2.7 匹配模式
12.2.8 捕獲分組的引用
12.3 正則API簡介
12.3.1 RegExp
12.3.2 String
12.4 常用操作示例
12.4.1 驗證
12.4.2 提取
12.4.3 替換
12.4.4 切分
12.5 關于ActionScript
12.5.1 RegExp
12.5.2 匹配規則
12.5.3 匹配模式
12.5.4 正則API
第13章 PHP
13.1 預備知識
13.2 正則功能詳解
13.2.1 列表
13.2.2 字符組
13.2.3 Unicode屬性
13.2.4 字符組簡記法
13.2.5 單詞邊界
13.2.6 行起始/結束位置
13.2.7 環視
13.2.8 匹配模式
13.2.9 純文本模式
13.2.10 捕獲分組的引用
13.3 正則API簡介
13.3.1 PREG 常量說明
13.3.2 preg_quote
13.3.3 preg_ grep
13.3.4 preg_match
13.3.5 preg_match_all
13.3.6 preg_ last_ error
13.3.7 preg_replace
13.3.8 preg_ replace_ callback
13.3.9 preg_ filter
13.3.10 preg_ split
13.4 常見的正則操作舉例
13.4.1 驗證
13.4.2 提取
13.4.3 替換
13.4.4 切分
第14章 Python
14.1 預備知識
14.2 正則功能詳解
14.2.1 列表
14.2.2 字符組
14.2.3 Unicode屬性
14.2.4 字符組簡記法
14.2.5 單詞邊界
14.2.6 行起始/結束位置
14.2.7 環視
14.2.8 匹配模式
14.2.9 捕獲分組的引用
14.3 正則API簡介
14.3.1 RegexObject
14.3.2 re.compile(regex[, flags])
14.3.3 re.search(pattern, string[, flags])
14.3.4 MatchObject
14.3.5 re.match(pattern, string[, flags])
14.3.6 re.findall(pattern, sting[, flags])
14.3.7 re.finditer(pattern, string[, flags])
14.3.8 re.split(pattern, string[, maxsplit=0, flags=0])
14.3.9 re.sub(pattern, repl, string[, count, flags])
14.4 常用操作示例
14.4.1 驗證
14.4.2 提取
14.4.3 替換
14.4.4 切分
第15章 Ruby
15.1 預備知識
15.2 正則功能詳解
15.2.1 列表
15.2.2 字符組
15.2.3 Unicode屬性
15.2.4 字符組簡記法
15.2.5 單詞邊界
15.2.6 行起始/結束位置
15.2.7 環視
15.2.8 匹配模式
15.2.9 捕獲分組的引用
15.3 正則API簡介
15.3.1 Regexp
15.3.2 Regexp.match(text)
15.3.3 Regexp.quote(text)和Regexp.escape(text)
15.3.4 String.index(Regexp)
15.3.5 String.scan(Regexp)
15.3.6 String.slice(Regexp)
15.3.7 String.split(Regexp)
15.3.8 String.sub(Regexp, Str)
15.3.9 String.gsub(Regexp, String)
15.4 常用操作示例
15.4.1 驗證
15.4.2 提取
15.4.3 替換
15.4.4 切分
15.5 Ruby 1.9的新變化
第16章 Linux/UNIX
16.1 POSIX
16.1.1 POSIX規范
16.1.2 POSIX字符組
16.2 vi
16.2.1 字符組及簡記法
16.2.2 量詞
16.2.3 多選結構和捕獲分組
16.2.4 環視
16.2.5 錨點和單詞邊界
16.2.6 替換操作的特殊字符
16.2.7 replacement中的特殊變量
16.2.8 補充
16.3 grep
16.3.1 基本用法
16.3.2 字符組
16.3.3 錨點和單詞邊界
16.3.4 量詞
16.3.5 多選結構和捕獲分組
16.3.6 options
16.3.7 egrep和fgrep
16.3.8 補充
16.4 awk
16.4.1 基本用法
16.4.2 字符組及簡記法
16.4.3 錨點和單詞邊界
16.4.4 量詞
16.4.5 多選結構
16.4.6 補充
16.5 sed
16.5.1 基本用法
16.5.2 字符組及簡記法
16.5.3 錨點和單詞邊界
16.5.4 量詞
16.5.5 多選結構和捕獲分組
16.5.6 options
16.5.7 補充
16.6 總結
附錄A 常用語言中正則特性一覽
附錄B 常用的正則表達式
附錄C 常用的正則表達式工具及資源