内容简介 · · · · · ·
本书适合各种语言和平台的开发人员。
豆瓣成员常用的标签(共51个) · · · · · ·
丛书信息
喜欢读"正则表达式必知必会"的人也喜欢 · · · · · ·
按有用程度 按页码先后 最新笔记
-
全部
正则表达式使用场合:1、查找特定的信息(搜索),匹配一些文本,2、查找并编辑特定的信息(替换),匹配并替换一些文本。 全局匹配 不区分大小写 模式(Pattern)表示实际的正则表达式。 \是一个元字符(metacharacter),表示“这个字符有特殊含义,而不是字符本身含义。 验证某个模式能不能获得预期的匹配结果并不困难,难点是:如何验证它不会匹配到你不想要的东西。 正则表达式可以用来匹配包含着字符串内容.. (更多)正则表达式使用场合:1、查找特定的信息(搜索),匹配一些文本,2、查找并编辑特定的信息(替换),匹配并替换一些文本。全局匹配不区分大小写模式(Pattern)表示实际的正则表达式。\是一个元字符(metacharacter),表示“这个字符有特殊含义,而不是字符本身含义。验证某个模式能不能获得预期的匹配结果并不困难,难点是:如何验证它不会匹配到你不想要的东西。正则表达式可以用来匹配包含着字符串内容的模式。匹配的并不总是整个字符串的,而是与某个模式相匹配的字符——即使它们只是整个字符串的一部分。如果需要把某个正则表达式的匹配结果传递到其他代码或应用程序里做进一步处理,就必须记住这一细节差异。防止过度匹配:*和+都是所谓的“贪婪型”元字符,它们在进行匹配时的行为模式是多多益善而不是适可而止的。它们会尽可能地从一段文本质开头一直匹配到这段文本的末尾,而不是从这段文本的开头匹配到碰到第一个匹配时为止。可使用“懒惰型”版本,与“贪婪型”正好相反。* -> *?,+ -> +?,{n, } -> {n, }?\b限定符指定单词边界,用来匹配一个单词的开始或结尾,它是这样一个位置,位于一个能够用来构成单词的字符(字母、数字和下线,也就是与\w相匹配的字符)和一个不能用来构成单词的字符(也就是与\W相匹配的字符)之间。注意:\b匹配只匹配一个位置,不匹配任何字。\B表明不匹配一个单词边界,即字母数字下划线之间,或者非字母数字下划线之间。\<只匹配单词珠开头,\>只匹配单词的结果,但支持两种元字符的正则表达式引擎并不多见。用来定义字符串边界的元字符有两个:一个是用来定义字符串开头的^,另一个是用定义字符串结尾的$。^放在集合中,表示“求非”。启用分行匹配模式的(?m)是一个能够改变其他元字符行为的元字符序列,它在整个模式的最前面出现。在分行匹配模式下,^不仅匹配正常的字符串开头,还将匹配行分隔符(换行符)后面的开始位置(这个位置是不可能见的);类似地,$不仅匹配正常的字符串结尾,还将匹配行分隔符(换行符)后面的结束位置。要检查是否支持子表达式是一个更大的表达式的一部分;把一个表达式划分为一系列子表达式的目的是为了把那些子表达式当作一个独立元素来使用。子表达式必须用(和)括起来。在构造一个正则表达式的时候,一定要把你想匹配什么和你不想匹配什么详尽地定义清楚,定义好必须且只能符合的规则,再根据这些规则来构造一个相应的模式。分析正则表达式,关键是要把它们分解开、每次只分析和理解一个子表达式。在分析各个子表达式的时候,应该按照先内后外的原则来进行,而不是从第一个字符开始一个字符一个字符地去尝试。子表达式常见用途包括:对重复次数元字符的作用对象做出精确的设定和控制、对|操作符的OR条件做出准确的定义,等等。如有必要,子表达式还允许嵌套使用。回溯引用指的是模式的后半部分引用在前半部分中定义的子表达式,它允许正则表达式模式引用前面的匹配结果,可将其想像成变量。回溯引用只能用来引用模式里的子表达式(用(和)括起来的正则表达式片段),其匹配通常从1开始计数(\1、\2,等等),在许多实现里,第0个(\0)可以用来代表整个正则表达式,同一个子表达式可以被引用任意多次。为弥补子表达式相对位置引用的缺陷,某些新的正则表达式还支持“命名捕获”(named capture):给某个子表达式起一个唯一的名字,然后用这个名字(而不是相对位置)来引用这个子表达式。需检查是否支持在对文本进行重新排版的时候,把文本分解成多个子表达式的做法往往非常有用,这可以文本的排版效果做出更精确的控制。字符大小写转换向前查找指定了一个必须匹配但不在结果中返回的模式,实际上就是一个子表达式,以?=开关的子表达式,需要匹配的文本跟在=的后面。向前查找(和向后查找)匹配本身其实是有返回结果的,只是这个字节长度永远是0而已。因此,前后查找操作有时也被称为零宽度(zero-width)匹配操作。向后查找操作符是?<=,向前查找模式的长度是可变的,它们可以包含.和+之类的元字符,所以它们非常灵活;而向后查找模式只能是固定长度——这是一条几乎所有的正则表达式实现都遵守的限制。负向前查找和负向后查找,将正向前查找和正向后查找的=换成!。它们可对最终的匹配结果包含且史包含哪些内容做出更精确的控制,前后查找操作使我们可以利用子表达式来指定文本匹配操作的发生位置,并收到只匹配不消费的效果。正则表达式里的条件:1、根据一个回溯引用来进行条件处理;2、根据一个前后查找来进行条件处理。回溯引用条件:1、?(backreference)true-regex2、?(backreference)true-regex|false-regex)只有当前面的backreference成立或不成立时执行后面的true-regex或false-regex匹配前后查找条件,只在一个向前查找或向后查找操作取得成功的情况下才允许一个表达式被使用,只需把回溯引用条件中的引用编号替换为一个完整的前后查找表达式就行了。正则表达式的调试,先对整个模式的各组成部分分别进行调试,再把它们拼装到一起,这通常是一种比较好的办法。 (收起)2011-09-17 17:36:39 回应
-
第32页
小P孩 (阿康代购:ahkang.taobao.com)
POSIX字符类 [:alnum:] 字母或数字 [:alpha:] 字母 [:blank:] 空格或制表符。等价于[\t ] [:cntrl:] ASCII控制字符(0到31,再加上127) [:digit:] 数字 [:graph:] 非空字符。与[:print:]一样,但不包括空格 [:lower:] 小写字符 [:print:] 任何一个可打印字符。非空字符(包括空格) [:punct:] 标点符号 [:space:] 所有空白字符。等价于[^\f\n\r\t\v ] [:upper:] 大写字符 ... (更多)POSIX字符类[:alnum:] 字母或数字[:alpha:] 字母[:blank:] 空格或制表符。等价于[\t ][:cntrl:] ASCII控制字符(0到31,再加上127)[:digit:] 数字[:graph:] 非空字符。与[:print:]一样,但不包括空格[:lower:] 小写字符[:print:] 任何一个可打印字符。非空字符(包括空格)[:punct:] 标点符号[:space:] 所有空白字符。等价于[^\f\n\r\t\v ][:upper:] 大写字符[:xdigit:] 十六进制数字。等价于[0-9a-fA-F] (收起)2011-04-10 22:04:03 回应
-
第48页
小P孩 (阿康代购:ahkang.taobao.com)
Q:贪婪型元字符和懒惰型元字符的区别? A:贪婪型元字符在匹配时的行为模式是多多益善而不会适可而止,懒惰型元字符则正好相反,它会匹配尽可能少的字符。 懒惰型元字符的写法就是在贪婪型元字符后加上一个?后缀。 贪婪型元字符: * + {n,} 懒惰型元字符: *? +? {n,}? (更多)Q:贪婪型元字符和懒惰型元字符的区别?A:贪婪型元字符在匹配时的行为模式是多多益善而不会适可而止,懒惰型元字符则正好相反,它会匹配尽可能少的字符。懒惰型元字符的写法就是在贪婪型元字符后加上一个?后缀。贪婪型元字符: * + {n,}懒惰型元字符:*? +? {n,}? (收起)2011-04-10 21:57:18 回应
-
第32页
小P孩 (阿康代购:ahkang.taobao.com)
POSIX字符类 [:alnum:] 字母或数字 [:alpha:] 字母 [:blank:] 空格或制表符。等价于[\t ] [:cntrl:] ASCII控制字符(0到31,再加上127) [:digit:] 数字 [:graph:] 非空字符。与[:print:]一样,但不包括空格 [:lower:] 小写字符 [:print:] 任何一个可打印字符。非空字符(包括空格) [:punct:] 标点符号 [:space:] 所有空白字符。等价于[^\f\n\r\t\v ] [:upper:] 大写字符 ... (更多)POSIX字符类[:alnum:] 字母或数字[:alpha:] 字母[:blank:] 空格或制表符。等价于[\t ][:cntrl:] ASCII控制字符(0到31,再加上127)[:digit:] 数字[:graph:] 非空字符。与[:print:]一样,但不包括空格[:lower:] 小写字符[:print:] 任何一个可打印字符。非空字符(包括空格)[:punct:] 标点符号[:space:] 所有空白字符。等价于[^\f\n\r\t\v ][:upper:] 大写字符[:xdigit:] 十六进制数字。等价于[0-9a-fA-F] (收起)2011-04-10 22:04:03 回应
-
全部
正则表达式使用场合:1、查找特定的信息(搜索),匹配一些文本,2、查找并编辑特定的信息(替换),匹配并替换一些文本。 全局匹配 不区分大小写 模式(Pattern)表示实际的正则表达式。 \是一个元字符(metacharacter),表示“这个字符有特殊含义,而不是字符本身含义。 验证某个模式能不能获得预期的匹配结果并不困难,难点是:如何验证它不会匹配到你不想要的东西。 正则表达式可以用来匹配包含着字符串内容.. (更多)正则表达式使用场合:1、查找特定的信息(搜索),匹配一些文本,2、查找并编辑特定的信息(替换),匹配并替换一些文本。全局匹配不区分大小写模式(Pattern)表示实际的正则表达式。\是一个元字符(metacharacter),表示“这个字符有特殊含义,而不是字符本身含义。验证某个模式能不能获得预期的匹配结果并不困难,难点是:如何验证它不会匹配到你不想要的东西。正则表达式可以用来匹配包含着字符串内容的模式。匹配的并不总是整个字符串的,而是与某个模式相匹配的字符——即使它们只是整个字符串的一部分。如果需要把某个正则表达式的匹配结果传递到其他代码或应用程序里做进一步处理,就必须记住这一细节差异。防止过度匹配:*和+都是所谓的“贪婪型”元字符,它们在进行匹配时的行为模式是多多益善而不是适可而止的。它们会尽可能地从一段文本质开头一直匹配到这段文本的末尾,而不是从这段文本的开头匹配到碰到第一个匹配时为止。可使用“懒惰型”版本,与“贪婪型”正好相反。* -> *?,+ -> +?,{n, } -> {n, }?\b限定符指定单词边界,用来匹配一个单词的开始或结尾,它是这样一个位置,位于一个能够用来构成单词的字符(字母、数字和下线,也就是与\w相匹配的字符)和一个不能用来构成单词的字符(也就是与\W相匹配的字符)之间。注意:\b匹配只匹配一个位置,不匹配任何字。\B表明不匹配一个单词边界,即字母数字下划线之间,或者非字母数字下划线之间。\<只匹配单词珠开头,\>只匹配单词的结果,但支持两种元字符的正则表达式引擎并不多见。用来定义字符串边界的元字符有两个:一个是用来定义字符串开头的^,另一个是用定义字符串结尾的$。^放在集合中,表示“求非”。启用分行匹配模式的(?m)是一个能够改变其他元字符行为的元字符序列,它在整个模式的最前面出现。在分行匹配模式下,^不仅匹配正常的字符串开头,还将匹配行分隔符(换行符)后面的开始位置(这个位置是不可能见的);类似地,$不仅匹配正常的字符串结尾,还将匹配行分隔符(换行符)后面的结束位置。要检查是否支持子表达式是一个更大的表达式的一部分;把一个表达式划分为一系列子表达式的目的是为了把那些子表达式当作一个独立元素来使用。子表达式必须用(和)括起来。在构造一个正则表达式的时候,一定要把你想匹配什么和你不想匹配什么详尽地定义清楚,定义好必须且只能符合的规则,再根据这些规则来构造一个相应的模式。分析正则表达式,关键是要把它们分解开、每次只分析和理解一个子表达式。在分析各个子表达式的时候,应该按照先内后外的原则来进行,而不是从第一个字符开始一个字符一个字符地去尝试。子表达式常见用途包括:对重复次数元字符的作用对象做出精确的设定和控制、对|操作符的OR条件做出准确的定义,等等。如有必要,子表达式还允许嵌套使用。回溯引用指的是模式的后半部分引用在前半部分中定义的子表达式,它允许正则表达式模式引用前面的匹配结果,可将其想像成变量。回溯引用只能用来引用模式里的子表达式(用(和)括起来的正则表达式片段),其匹配通常从1开始计数(\1、\2,等等),在许多实现里,第0个(\0)可以用来代表整个正则表达式,同一个子表达式可以被引用任意多次。为弥补子表达式相对位置引用的缺陷,某些新的正则表达式还支持“命名捕获”(named capture):给某个子表达式起一个唯一的名字,然后用这个名字(而不是相对位置)来引用这个子表达式。需检查是否支持在对文本进行重新排版的时候,把文本分解成多个子表达式的做法往往非常有用,这可以文本的排版效果做出更精确的控制。字符大小写转换向前查找指定了一个必须匹配但不在结果中返回的模式,实际上就是一个子表达式,以?=开关的子表达式,需要匹配的文本跟在=的后面。向前查找(和向后查找)匹配本身其实是有返回结果的,只是这个字节长度永远是0而已。因此,前后查找操作有时也被称为零宽度(zero-width)匹配操作。向后查找操作符是?<=,向前查找模式的长度是可变的,它们可以包含.和+之类的元字符,所以它们非常灵活;而向后查找模式只能是固定长度——这是一条几乎所有的正则表达式实现都遵守的限制。负向前查找和负向后查找,将正向前查找和正向后查找的=换成!。它们可对最终的匹配结果包含且史包含哪些内容做出更精确的控制,前后查找操作使我们可以利用子表达式来指定文本匹配操作的发生位置,并收到只匹配不消费的效果。正则表达式里的条件:1、根据一个回溯引用来进行条件处理;2、根据一个前后查找来进行条件处理。回溯引用条件:1、?(backreference)true-regex2、?(backreference)true-regex|false-regex)只有当前面的backreference成立或不成立时执行后面的true-regex或false-regex匹配前后查找条件,只在一个向前查找或向后查找操作取得成功的情况下才允许一个表达式被使用,只需把回溯引用条件中的引用编号替换为一个完整的前后查找表达式就行了。正则表达式的调试,先对整个模式的各组成部分分别进行调试,再把它们拼装到一起,这通常是一种比较好的办法。 (收起)2011-09-17 17:36:39 回应
-
第32页
小P孩 (阿康代购:ahkang.taobao.com)
POSIX字符类 [:alnum:] 字母或数字 [:alpha:] 字母 [:blank:] 空格或制表符。等价于[\t ] [:cntrl:] ASCII控制字符(0到31,再加上127) [:digit:] 数字 [:graph:] 非空字符。与[:print:]一样,但不包括空格 [:lower:] 小写字符 [:print:] 任何一个可打印字符。非空字符(包括空格) [:punct:] 标点符号 [:space:] 所有空白字符。等价于[^\f\n\r\t\v ] [:upper:] 大写字符 ... (更多)POSIX字符类[:alnum:] 字母或数字[:alpha:] 字母[:blank:] 空格或制表符。等价于[\t ][:cntrl:] ASCII控制字符(0到31,再加上127)[:digit:] 数字[:graph:] 非空字符。与[:print:]一样,但不包括空格[:lower:] 小写字符[:print:] 任何一个可打印字符。非空字符(包括空格)[:punct:] 标点符号[:space:] 所有空白字符。等价于[^\f\n\r\t\v ][:upper:] 大写字符[:xdigit:] 十六进制数字。等价于[0-9a-fA-F] (收起)2011-04-10 22:04:03 回应
-
第48页
小P孩 (阿康代购:ahkang.taobao.com)
Q:贪婪型元字符和懒惰型元字符的区别? A:贪婪型元字符在匹配时的行为模式是多多益善而不会适可而止,懒惰型元字符则正好相反,它会匹配尽可能少的字符。 懒惰型元字符的写法就是在贪婪型元字符后加上一个?后缀。 贪婪型元字符: * + {n,} 懒惰型元字符: *? +? {n,}? (更多)Q:贪婪型元字符和懒惰型元字符的区别?A:贪婪型元字符在匹配时的行为模式是多多益善而不会适可而止,懒惰型元字符则正好相反,它会匹配尽可能少的字符。懒惰型元字符的写法就是在贪婪型元字符后加上一个?后缀。贪婪型元字符: * + {n,}懒惰型元字符:*? +? {n,}? (收起)2011-04-10 21:57:18 回应
书评 · · · · · · (共14条) 我来评论这本书
热门评论 最新评论
遗憾的是翻译时并没有参考原书的勘误
-
- Tarazed 书中已经提及勘误表参看http://www.forta.com/books/0672325667/,但对照了一下,网页上2004年已经修正的勘误条目并没有被翻译版本吸收,主要是一些结果示例中的高亮范围,如原书第45页,中文第40页,结果中高亮部分不应该包括开头的点。 再比如附录B.12中的示例里错把D...... (1回应)2009-08-27 1/1有用
正则表达式必知必会简评
-
- leal(开心) 这书是参加图灵五周年活动拿到的,2009年2月第2次印刷。 书很薄,一两个小时即可看完,实例+说明,适合临时抱佛脚用,是本不错的正则表达式入门书。译文相当流畅,值得一读。 不过,对于这薄薄一本书(正文部分不及百页)而言,错误似乎多了点。 部分勘误见:http://www.douban.com/...... (1回应)2010-06-05
值得再去深入学习的知识
-
- 青(凛冬将至) 认识正则表达式的入门书,几天前就看完了,一直在犹豫是不是要把书内的例子在机器上实践一把,由于看得是电子版本,例子的结果图都没有,没有正确结果啊,同志们,能不犹豫么。书还可以,图灵的这类书都是这样的入门级,不难理解,就像游泳,先让你进入浅水区,至于是否要再进入中深水区,个人看着办吧。不过正则表达式确实非常值得深入去学习一......2011-05-04
很好地入门书,一般人够用了
-
- Tiankui 其他的正则书实在是太厚太枯燥了。 这本可以看下去,不错。 起个引论作用不错。 需要深入可以在这之后再去看其他书。 为啥豆瓣都要求这么长的书评,真讨厌~~~~~~~~~~~~......2011-03-19
你想一个下午掌握正则表达式吗?
-
- 雾都孤狗(洗洗睡了) 你想一个下午掌握正则表达式吗?如果你想,那你必须得选择这本书了。书很薄,言简意赅,点到即止,循序渐进,有许多应景的例子,非常适合非perl程序员。一边看书,一边做一些测试,基本上一下午就能把正则表达式常用的功能掌握,放在手边日常开发时偶尔查阅一下也非常方便。不过,对于正则表达式这种“火星文”还是得多做练习,不然一段时间...... (1回应)2010-10-24
实践是学习正则的唯一途径!
-
- 菜頭 是的. 正则不像学习编程语言,需要系统全面. 正则仅仅是一个工具 正则的学习(实践)是无止尽的. 没有人可以说正则很简单. 实现同一目的 的方法有太多太多. 更有趣的是,正则可以看出一个人性格. 是严谨?是爱耍小聪明?是稳重规矩? ......2009-12-30 1/1有用
"正则表达式必知必会"的论坛 · · · · · ·
| 誰來詳細說說? | 来自weakish | 6 回应 | 2009-04-15 |
| 正则表达式的优秀入门书 | 来自leechau | 2010-04-14 |
在哪儿买这本书? · · · · · ·
- 北发图书网 (RMB 22.90)
- 查看1家网店价格 (22.90元起)
- 加入购书单 多本比价 批量购买 已在购书单
这本书的其他版本 · · · · · · ( 全部2 )
- Sams版 2004-02-28 / 12人读过
以下豆列推荐 · · · · · · (全部)
- Computer_Science (雷Sir)
- 4年小记 (雲)
- web用户体验必读书籍(lu2ux推荐) (lu2ux)
- 编程C语言,Python等类书籍 (IVAN)
- 计算机 (plus_ed)
谁读这本书?
tags:经典 基础 正则
不错不错,适合对正则完全一无所知的我,起码让我学会了简单地编写正则表达式,很适合入门~~不过一般人也用不上深究正则,有了这本书,然后要用的时候查查,还挺不错的~~~
> 36人在读
> 196人读过
> 211人想读
喜欢这本书的人常去的小组 · · · · · ·

- 正则表达式 (262)

- 程序员-接活 (337)

- Linux Kernel 学习 (712)

- Vim (6201)

- .NET (1397)

- Python编程 (19010)

- Google App Engine (5280)
喜欢这本书的人关注的活动 · · · · · ·
订阅关于正则表达式必知必会的评论:
feed: rss 2.0











