《精通Regex(第3版)》
基本資料
作者: [美]Jeffrey E.F.Friedl
譯者: 餘晟
出版社:電子工業出版社
ISBN:9787121175015
上架時間:2012-8-6
出版日期:2012 年8月
開本:16開
頁碼:560
版次:1-1
所屬分類: 電腦 > 軟體與程式設計 > 綜合 > 進階程式語言設計
更多關於 》》》《精通Regex(第3版)》
內容簡介
書籍
電腦書籍
隨著互連網的迅速發展,幾乎所有工具軟體和程式語言都支援的Regex也變得越來越強大和便於使用。本書是講解Regex的經典之作。本書主要講解了Regex的特性和流派、匹配原理、最佳化原則、實用訣竅以及調校措施,並詳細介紹了Regex在perl、java、.net、php中的用法。
《精通Regex(第3版)》自第1版開始著力於教會讀者“以Regex來思考”,來讓讀者真正“精通”Regex。該版對php的相關內容、java1.5和java1.6的新特性作了可觀的擴充講解。任何有機會使用Regex的讀者都會從中獲益匪淺。
目錄
《精通Regex(第3版)》
前言 i
第1章:Regex入門 1
解決實際問題 2
作為程式設計語言的Regex 4
以檔案名稱做類比 4
以語言做類比 5
Regex的思維架構 6
對於有部分經驗的讀者 6
檢索文字檔:egrep 6
egrep元字元 8
行的起始和結束 8
字元組 9
用點號匹配任一字元 11
多選結構 13
忽略大小寫 14
單詞分界符 15
小結 16
可選項元素 17
其他量詞:重複出現 18
括弧及反向引用 20
神奇的轉義 22
基礎知識拓展 23
語言的差異 23
Regex的目標 23
更多的例子 23
Regex術語彙總 27
改進現狀 30
總結 32
一家之言 33
第2章:入門樣本拓展 35
關於這些例子 36
perl簡單入門 37
使用Regex匹配文本 38
向更實用的程式前進 40
成功匹配的副作用 40
錯綜複雜的Regex 43
暫停片刻 49
使用Regex修改文本 50
例子:公函產生程式 50
舉例:修整股票價格 51
自動的編輯操作 53
處理郵件的小工具 53
用環視功能為數值添加逗號 59
text-to-html轉換 67
回到單詞重複問題 77
第3章:Regex的特性和流派概覽 83
在正則的世界中漫步 85
Regex的起源 85
最初印象 91
Regex的注意事項和處理方式 93
整合式處理 94
程式式處理和物件導向式處理 95
尋找和替換 98
其他語言中的尋找和替換 100
注意事項和處理方式:小結 101
字串,字元編碼和匹配模式 101
作為Regex的字串 101
字元編碼 105
unicode 106
正則模式和匹配模式 110
常用的元字元和特性 113
字元標記法 115
字元組及相關結構 118
錨點及其他“零長度斷言” 129
注釋和模式修飾符 135
分組,捕獲,條件判斷和控制 137
進階話題引導 142
第4章:運算式的匹配原理 143
發動引擎 143
兩類引擎 144
新的標準 144
正則引擎的分類 145
幾句題外話 146
測試引擎的類型 146
匹配的基礎 147
關於範例 147
規則1:優先選擇最左端的匹配結果 148
引擎的構造 149
規則2:標準量詞是匹配優先的 151
運算式主導與文本主導 153
nfa引擎:運算式主導 153
dfa引擎:文本主導 155
第一想法:比較nfa與dfa 156
回溯 157
真實世界中的例子:麵包屑 158
回溯的兩個要點 159
備用狀態 159
回溯與匹配優先 162
關於匹配優先和回溯的更多內容 163
匹配優先的問題 164
多字元“引文” 165
使用忽略優先量詞 166
匹配優先和忽略優先都期望獲得匹配 167
匹配優先、忽略優先和回溯的要旨 168
佔有優先量詞和固化分組 169
佔有優先量詞,?+、*+、++和{m,n}+ 172
環視中的回溯 173
多選結構也是匹配優先的嗎 174
發掘有序多選結構的價值 175
nfa、dfa和posix 177
最左最長規則 177
posix和最左最長規則 178
速度和效率 179
小結:nfa與dfa的比較 180
總結 183
第5章:Regex實用技巧 185
Regex的平衡法則 186
若干簡單的例子 186
匹配連續行(續前) 186
匹配ip地址 187
處理檔案名稱 190
匹配對稱的括弧 193
防備不期望的匹配 194
匹配分隔字元之內的文本 196
瞭解資料,做出假設 198
去除文本首尾的空白字元 199
html相關範例 200
匹配html tag 200
匹配html link 201
檢查http url 203
驗證主機名稱 203
在真實世界中提取url 206
擴充的例子 208
保持資料的協調性 209
解析csv檔案 213
第6章:打造高效Regex 221
典型樣本 222
稍加修改——先邁最好使的腿 223
效率vs準確性 223
繼續前進——限制匹配優先的作用範圍 225
實測 226
全面考察回溯 228
posix nfa需要更多處理 229
無法匹配時必須進行的工作 230
看清楚一點 231
多選結構的代價很高 231
效能測試 232
理解測量對象 234
php測試 234
java測試 235
vb.net測試 237
ruby測試 238
python測試 238
tcl測試 239
常見最佳化措施 240
有得必有失 240
最佳化各有不同 241
Regex的應用原理 241
應用之前的最佳化措施 242
通過傳動裝置進行最佳化 246
最佳化Regex本身 247
提高運算式速度的訣竅 252
常識性最佳化 254
將文字文本獨立出來 255
將錨點獨立出來 256
忽略優先還是匹配優先?具體情況具體分析 256
拆分Regex 257
類比開頭字元識別 258
使用固化分組和佔有優先量詞 259
主導引擎的匹配 260
消除迴圈 261
方法1:依據經驗構建Regex 262
真正的“消除迴圈”解法 264
方法2:自頂向下的視角 266
方法3:匹配主機名稱 267
觀察 268
使用固化分組和佔有優先量詞 268
簡單的消除迴圈的例子 270
消除c語言注釋匹配的迴圈 272
流暢運轉的運算式 277
引導匹配的工具 277
引導良好的Regex速度很快 279
完工 281
總結:開動你的大腦 281
第7章:perl 283
作為語言群組件的Regex 285
perl的長處 286
perl的短處 286
perl的正則流派 286
正則運算子和正則文字 288
正則文字的解析方式 292
正則修飾符 292
Regex相關的perl教義 293
運算式應用場合 294
動態範圍及正則匹配效應 295
匹配修改的特殊變數 299
qr/…/運算子與regex對象 303
構建和使用regex對象 303
探究regex對象 305
用regex對象提高效率 306
match運算子 306
match的正則運算元 307
指定目標運算元 308
match運算子的不同用途 309
迭代匹配:scalar context,使用/g 312
match運算子與環境的關係 316
substitution運算子 318
運算元replacement 319
/e修飾符 319
應用場合與傳回值 321
split運算子 321
split基礎知識 322
返回空元素 324
split中的特殊regex運算元 325
split中帶捕獲型括弧的match運算元 326
巧用perl的專有特性 326
用動態Regex結構匹配嵌套結構 328
使用內嵌代碼結構 331
在內嵌代碼結構中使用local函數 335
關於內嵌代碼和my變數的忠告 338
使用內嵌代碼匹配嵌套結構 340
正則文字重載 341
正則文字重載的問題 344
類比命名捕獲 344
效率 347
辦法不只一種 348
運算式編譯、/o修飾符、qr/???/和效率 348
理解“原文”副本 355
study函數 359
效能測試 360
Regex調試資訊 361
結語 363
第8章:java 365
java的正則流派 366
java對\p{…}和\p{…}的支援 369
unicode行終結符 370
使用java.util.regex 371
the pattern.compile() factory 372
pattern的matcher方法 373
matcher對象 373
應用Regex 375
查詢匹配結果 376
簡單尋找-替換 378
進階尋找-替換 380
原地尋找-替換 382
matcher的檢索範圍 384
方法鏈 389
構建掃描程式 389
matcher的其他方法 392
pattern的其他方法 394
pattern的split方法,單個參數 395
pattern的split方法,兩個參數 396
拓展樣本 397
為image tag添加寬度和高度屬性 397
對於每個matcher,使用多個pattern校正html 399
解析csv文檔 401
java版本差異 401
1.4.2和1.5.0之間的差異 402
1.5.0和1.6之間的差異 403
第9章:.net 405
.net的正則流派 406
對於流派的補充 409
使用.netRegex 413
Regex快速入門 413
包概覽 415
核心對象概覽 416
核心對象詳解 418
建立regex對象 419
使用regex對象 421
使用match對象 427
使用group對象 430
靜態“便捷”函數 431
Regex緩衝 432
支援函數 432
.net進階話題 434
Regex裝配件 434
匹配嵌套結構 436
capture對象 437
第10章:php 439
php的正則流派 441
preg函數介面 443
“pattern”參數 444
preg函數羅列 449
preg_match 449
preg_match_all 453
preg_replace 458
preg_replace_callback 463
preg_split 465
preg_grep 469
preg_quote 470
“缺失”的preg函數 471
preg_regex_to_pattern 472
對未知的pattern參數進行語法檢查 474
對未知Regex進行語法檢查 475
遞迴的Regex 475
匹配嵌套括弧內的文本 475
不能回溯到遞迴調用之內 477
匹配一組嵌套的括弧 478
效率 478
模式修飾符s:“研究” 478
擴充樣本 480
用php解析csv 480
檢查tagged data的嵌套正確性 481
索引 485
本圖書資訊來源於:中國互動出版網