您好,欢迎光临有路网!
精通正则表达式(第3版)
QQ咨询:
有路璐璐:

精通正则表达式(第3版)

  • 作者:Jeffrey E.F.Friedl(杰佛瑞E.F.佛瑞德)
  • 出版社:电子工业出版社
  • ISBN:9787121175015
  • 出版日期:2012年07月01日
  • 页数:560
  • 定价:¥89.00
  • 猜你也喜欢

    分享领佣金
    手机购买
    城市
    店铺名称
    店主联系方式
    店铺售价
    库存
    店铺得分/总交易量
    发布时间
    操作

    新书比价

    网站名称
    书名
    售价
    优惠
    操作

    图书详情

    内容提要
    随着互联网的迅速发展,几乎所有工具软件和程序语言都支持的正则表达式也变得越来越强大和易于使用。本书是讲解正则表达式的经典之作。本书主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校措施,并详细介绍了正则表达式在perl、java、.net、php中的用法。 精通正则表达式-第3版_Jeffrey E.F.Friedl(杰佛瑞E.F.佛瑞德)_电子工业出版社_
    文章节选
    前言 本书关注的是一种强大的工具——“正则表达式”。它将教会读者如何使用正则表达式解决各种问题,以及如何充分使用支持正则表达式的工具和语言。许多关于正则表达式的文档都没有介绍这种工具的能力,而本书的目的正是让读者“精通”正则表达式。.
    许多种工具都支持正则表达式(文本编辑器、文字处理软件、系统工具、数据库引擎,等等),不过,要想充分挖掘正则表达式的能力,还是应当将它作为编辑语言的一部分。例如Java、JScript、Visual
    Basic、VBScript、JavaScript、ECMAScript、C、C++、C#、elisp、Perl、Python、Tcl、Ruby、PHP、sed和awk。事实上,在一些用上述语言编写的程序中,正则表达式扮演了极其重要的角色。
    正则表达式能够得到众多语言和工具的支持是有原因的:它们极其有用。从较低的层面上来说,正则表达式描述的是一串文本(a chunk
    of
    text)的特征。读者可以用它来验证用户输入的数据,或者也可以用它来检索大量的文本。从较高的层面上来说,正则表达式容许用户掌控他们自己的数据——控制这些数据,让他们为自己服务。掌握正则表达式,就是掌握自己的数据。
    本书的价值 The Need for This Book
    本书的第1版写于1996年,以满足当时存在的需求。那时还没有关于正则表达式的详尽文档,所以它的大部分能力还没有被发掘出来。正则表达式文档倒是存在,但它们都立足于“低层次视角”。我认为,那种情况就好像是教一些人英文字母,然后就指望他们会说话。
    第2版与第1版间隔了五年半的时间,这期间,互联网迅速流行起来,正则表达式的形式也有了极大的扩张,这或许并不是巧合。几乎所有工具软件和程序语言支持的正则表达式也变得更加强大和易于使用。Perl、Python、Tcl、Java和Visual
    Basic都提供了新的正则支持。新出现的支持内建正则表达式的语言,例如PHP、Ruby、C#,也已经发展壮大,流行开来。在这段时间里,本书的核心——如何真正理解正则表达式,以及如何使用正则表达式——仍然保持着它的重要性和参考价值。
    不过,第1版已经逐渐脱离了时代,必须加以修订,才能适应新的语言和特性,也才能对应正则表达式在互联网世界中越来越重要的地位。第2
    版出版于2002年,这一年的里程碑是java.util.regex、Microsoft .NET Framework和Perl
    5.8的诞生。第2 版全面覆盖了这些内容。关于第2 版,我**的遗憾就是,它没有提及PHP。自第2 版诞生以来的4
    年里,PHP的重要性一直在增加,所以,弥补这一缺憾是非常迫切的。
    第3版在前面的章节中增加了PHP的相关内容,并专门为理解和应用PHP的正则表达式增加了一章全新的内容。另外,该版对Java的章节也进行了修订,做了可观的扩充,反映了Java1.5和Java1.6的新特性。
    目标读者 Intended Audience
    任何有机会使用正则表达式的人,都会对本书感兴趣。如果您还不了解正则表达式能提供的强大功能,这本书展示的全新世界将会让您受益匪浅。即使您认为自己已经是掌握正则表达式的高手了,这本书也能够深化您的认识。第1版面世后,我时常会收到读者的电子邮件反映说“读这本书之前,我以为自己了解正则表达式,但现在我才真正弄明白”。
    以与文本打交道为工作(如Web开发)的程序员将会发现,这本书**称得上是座金矿,因为其中蕴藏了各种细节、暗示、讲解,以及能够立刻投入到实用中的知识。在其他任何地方都难以找到这样完整而详尽的资料。
    正则表达式是一种思想——各种工具以各种方式(数目远远超过本书的列举)来实现它。如果读者理解了正则表达式的基本思想,掌握某种特殊的实现就是易如反掌的事情。本书关注的就是这种思想,所以其中的许多知识并不受例子中所用的工具软件和语言的束缚。
    如何阅读 How to Read This Book
    这本书既是教程,又是参考手册,还可以当故事看,这取决于读者的阅读方式。熟悉正则表达式的读者可能会觉得,这本书马上就能当作一本详细的参考手册,读者可以直接跳到自己需要的章节。不过,我并不鼓励这样做。
    要想充分利用这本书,可以把前6
    章作为故事来读。我发现,某些思维习惯和思维方式的确有助于完整的理解,不过*好还是从这几章的讲解中学习它们,而不是仅仅记住其中的几张列表。
    故事是这样的,前6 章是后面4
    章——包括Perl、Java、.NET和PHP——的基础。为了帮助读者理解每一部分,我交叉使用各章的知识,为了提供尽可能方便的索引,我投入了大量的精力(全书中有超过1
    200处交叉引用,它们用符号加页码的形式标注)。
    在读完整个故事以前,*好不要把本书作为参考手册。在开始阅读之前,读者可以参考其中的表格,例如第92页的图表,想象它代表了需要掌握的相关信息。但是,还有大量背景信息没有包含在图表中,而是隐藏在故事里。读者阅读完整个故事之后,会对这些问题有个清晰的概念,哪些能够记起来,哪些需要温习。
    . 组织结构 Organization 全书共10章,可以从逻辑上粗略地分为三类,下面是略图: 导引
    第1章:介绍正则表达式的基本概念。 第2章:考察利用正则表达式进行文本处理的过程。
    第3章:提供对于特性和工具软件的概述以及简史。 细节 第4章:揭示了正则表达式的工作原理的细节。
    第5章:利用第4章的知识,继续学习各种例子。 第6章:详细讨论效率问题。 特定工具的知识
    第7章:详细讲解Perl的正则表达式。 第8章:讲解Sun提供的java.util.regex包。
    第9章:讲解.NET的语言中立的正则表达式包。 第10章:讲解PHP中提供正则功能的preg套件
    导引部分会把完全的门外汉变成“对问题有感觉”的新手。对正则表达式有一定经验的读者完全可以快速翻阅这些章节,不过,即使是对于相当有经验的读者来说,我仍然要特别**第3章。
    第1章,正则表达式入门,是为完全的门外汉准备的。我以应用相当广泛的程序egrep为例,介绍正则表达式,我也提供了我的视角:如何“理解”正则表达式,来为后面章节所包括的**概念打下坚实的基础。即使是有经验的读者,浏览本章也会有所收获。
    第2章,入门示例拓展,考查了支持正则表达式的程序设计语言的真实文本处理过程。附加的示例提供了后面章节详细讨论的基础,也展示了**正则表达式调校背后的重要思考过程。为了让读者学会“正则表达式的套路”,这章出现了一个复杂问题,并讲解了两种全然不相关的工具如何分别通过正则表达式来解决它。
    第3章,正则表达式的特性和流派概览,提供了当前经常使用的工具的多种正则表达式的概览。因为历史的混乱,当前常用的正则表达式的类型可能差异巨大。此章同时介绍了正则表达式以及使用正则表达式的工具的历史和演化历程。本章末尾也提供了“**话题引导”。此引导是读者学习此后**内容的路线图。
    细节.. The Details
    了解了基础知识之后,读者需要弄明白“如何使用”及“这么做的原因”。就像“授人以渔”的典故一样,真正懂得正则表达式的读者,能够在任何时间、任何地点应用关于它的知识。
    第4章,表达式的匹配原理,循序渐进地导入本书的核心。它从实践的角度出发,考察了正则引擎真实工作的重要的内在机制。懂得正则表达式如何处理工作细节,对读者掌握它们大有裨益。
    第5章,正则表达式实用技巧,教育读者在高层次和实际的运用中应用知识。这一章会详细讲解常见(但复杂)的问题,目的在于拓展和深化读者对于正则表达式的认识。
    第6章,打造**正则表达式,考察真实生活中大多数程序设计语言提供的正则表达式的**结果。本章运用第4章和第5章详细讲解的知识,来开发引擎的能力,并避免其中的缺陷。
    特定工具的知识 Tool-Specific Information
    学习完第4、5、6章的读者,不太需要知道特定的实现。不过,我还是用了4个整章来讲解4种流行的语言。
    第7章,Perl,详细讲解了Perl的正则表达式,Perl大概是目前*流行的主要的正则表达式编程语言。在Perl中,与正则表达式相关的操作符只有四个,但它们组合出的选项和特殊情形带来了大量的程序选项——同时还有陷阱。对没有经验的开发人员来说,这种极其丰富的选项能够让他们迅速从概念转向程序,当然也可能是雷场。本章的详细介绍有助于给读者指出一条光明大道。
    第8章Java,详细介绍了jav.util.regex包,从Java
    1.4以后,它已经成为了Java语言的标准部分。本章主要关注的是Java 1.5,但也提及了它与Java 1.4.2和Java
    1.6的差别。
    第9章,.NET,是微软尚未提供的.NET正则表达式库的文档。无论使用VB.NET、C#、C++、Jscript、VBScript、ECMAScript还是使用.NET组件的其他语言,本章都提供了详细内容,让读者能够充分利用.NET的正则表达式。
    第10章,PHP,简要介绍了PHP内嵌的多个正则引擎,并详细介绍了preg正则表达式套件(regex
    engine)的类型和API,这些是由PCRE正则表达式库提供的。 体例说明 Typographical
    Conventions
    在进行(或者谈论)详细的和复杂的文本处理时,保持**性是很重要的。差一个空格字符,可能导致截然不同的结果,所以我会在本书中使用下面的惯例:
    正则表达式以[this]的形式出现。两端的符号表示“里面有一个正则表达式”,而正则表达式文
    目录
    前言
    第1章:正则表达式入门 1
    解决实际问题 2
    作为编程语言的正则表达式 4
    以文件名做类比 4
    以语言做类比 5
    正则表达式的知识框架 6
    对于有部分经验的读者 6
    检索文本文件:egrep 6
    egrep元字符 8
    行的起始和结束 8
    字符组 9
    用点号匹配任意字符 11
    多选结构 13
    忽略大小写 14
    单词分界符 15
    小结 16
    可选项元素 17
    其他量词:重复出现 18
    括号及反向引用 20
    .神奇的转义 22
    基础知识拓展 23
    语言的差异 23
    正则表达式的目标 23
    更多的例子 23
    正则表达式术语汇总 27
    改进现状 30
    总结 32
    一家之言 33
    第2章:入门示例拓展 35
    关于这些例子 36
    perl简短入门 37
    使用正则表达式匹配文本 38
    向更实用的程序前进 40
    成功匹配的副作用 40
    错综复杂的正则表达式 43
    暂停片刻 49
    使用正则表达式修改文本 50
    例子:公函生成程序 50
    举例:修整股票价格 51
    自动的编辑操作 53
    处理邮件的小工具 53
    用环视功能为数值添加逗号 59
    text-to-html转换 67
    回到单词重复问题 77
    第3章:正则表达式的特性和流派概览 83
    在正则的世界中漫步 85
    正则表达式的起源 85
    *初印象 91
    正则表达式的注意事项和处理方式 93
    集成式处理 94
    程序式处理和面向对象式处理 95
    查找和替换 98
    其他语言中的查找和替换 100
    注意事项和处理方式:小结 101
    字符串,字符编码和匹配模式 101
    作为正则表达式的字符串 101
    字符编码 105
    正则模式和匹配模式 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章:正则表达式实用技巧 185
    正则表达式的平衡法则 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章:打造**正则表达式 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
    正则表达式的应用原理 241
    应用之前的优化措施 242
    通过传动装置进行优化 246
    优化正则表达式本身 247
    提高表达式速度的诀窍 252
    常识性优化 254
    将文字文本独立出来 255
    将锚点独立出来 256
    忽略优先还是匹配优先?具体情况具体分析 256
    拆分正则表达式 257
    模拟开头字符识别 258
    使用固化分组和占有优先量词 259
    主导引擎的匹配 260
    消除循环 261
    方法1:依据经验构建正则表达式 262
    真正的“消除循环”解法 264
    方法2:自顶向下的视角 266
    方法3:匹配主机名 267
    观察 268
    使用固化分组和占有优先量词 268
    简单的消除循环的例子 270
    消除c语言注释匹配的循环 272
    流畅运转的表达式 277
    引导匹配的工具 277
    引导良好的正则表达式速度很快 279
    完工 281
    总结:开动你的大脑 281
    第7章:perl 283
    作为语言组件的正则表达式 285
    perl的长处 286
    perl的短处 286
    perl的正则流派 286
    正则运算符和正则文字 288
    正则文字的解析方式 292
    正则修饰符 292
    正则表达式相关的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
    用动态正则表达式结构匹配嵌套结构 328
    使用内嵌代码结构 331
    在内嵌代码结构中使用local函数 335
    关于内嵌代码和my变量的忠告 338
    使用内嵌代码匹配嵌套结构 340
    正则文字重载 341
    正则文字重载的问题 344
    模拟命名捕获 344
    效率 347
    办法不只一种 348
    表达式编译、/o修饰符、qr//和效率 348
    理解“原文”副本 355
    study函数 359
    性能测试 360
    正则表达式调试信息 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
    应用正则表达式 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
    使用.net正则表达式 413
    正则表达式快速入门 413
    包概览 415
    核心对象概览 416
    核心对象详解 418
    创建regex对象 419
    使用regex对象 421
    使用match对象 427
    使用group对象 430
    静态“便捷”函数 431
    正则表达式缓存 432
    支持函数 432
    .net**话题 434
    正则表达式装配件 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
    对未知的pattern参数进行语法检查 474
    对未知正则表达式进行语法检查 475
    递归的正则表达式 475
    匹配嵌套括号内的文本 475
    不能回溯到递归调用之内 477
    匹配一组嵌套的括号 478
    php效率 478
    模式修饰符s:“研究” 478
    扩展示例 480
    用php解析csv 480
    检查tagged data的嵌套正确性 481
    索引... 485

    与描述相符

    100

    北京 天津 河北 山西 内蒙古 辽宁 吉林 黑龙江 上海 江苏 浙江 安徽 福建 江西 山东 河南 湖北 湖南 广东 广西 海南 重庆 四川 贵州 云南 西藏 陕西 甘肃 青海 宁夏 新疆 台湾 香港 澳门 海外