Wed 2 May 2012
经过各位读者和出版社的辛苦努力,《正则指引》终于上市了,以下是主要的购买链接:
亚马逊:http://www.amazon.cn/%E6%AD%A3%E5%88%99%E6%8C%87%E5%BC%95-%E4%BD%99%E6%99%9F/dp/B007X6O6J0/
当当:http://product.dangdang.com/product.aspx?product_id=22702127
京东:http://book.360buy.com/10972570.html
China-Pub:http://product.china-pub.com/199266
有趣的是,预售阶段就登上了京东的24小时分类畅销榜,感谢大家的厚爱。
From Life Sailor, post 《正则指引》上市了
扫描二维码,订阅我的公共号“余晟以为”。
May 2nd, 2012 at 9:22 pm
支持
May 2nd, 2012 at 9:49 pm
恭喜恭喜,
支持!
May 2nd, 2012 at 10:08 pm
已经下单。
May 2nd, 2012 at 11:44 pm
好书,正则表达式乃程序员必知必会节省体力劳动的利器啊
May 3rd, 2012 at 1:21 pm
恭喜恭喜:)
May 3rd, 2012 at 3:22 pm
请问是否有电子版的书的计划….
最近越来越懒得看纸板书了
May 5th, 2012 at 11:00 am
暂时还没有,等有计划了会通知大家,多谢关心
May 4th, 2012 at 10:28 am
恭喜!早听闻,已定计划,周末入手。
May 8th, 2012 at 9:27 pm
恭喜!
可惜看不懂个,不然一定买一本,。
May 11th, 2012 at 12:22 pm
到手了,封面很有意思,内容还没仔细研究……
May 12th, 2012 at 6:56 pm
看了试读章节的第一章(还未看完),发现有点错误。
例1-20,有如下问题:
1、两个匹配结果反了,Java和.NET的都是;
2、.NET的两个字符串写反了,匹配模式应该写在后面。
请确认。
May 13th, 2012 at 8:13 pm
多谢你细心指出,之前也有读者提到了这个问题。
已经收录到勘误列表中,下次重印时会修正。
May 17th, 2012 at 11:47 am
PERL作为最早最好的正则实现之一,书中基本没有提及,有点遗憾,希望再版时能有此部分内容 --尽管PERL现在的使用者在变少。
June 5th, 2012 at 12:13 pm
PHP里的preg就是PCRE正则,一般是兼容Perl的。本书重点讲解正则表达式而非上层语言,相比较而言Perl还是比较小众吧……
June 11th, 2012 at 10:53 am
其实主要是我对Perl还没有熟悉到有足够信心成章
June 7th, 2012 at 5:19 pm
请问,有没有什么正则工具能测出来回溯次数的?
June 11th, 2012 at 10:53 am
好像RegexBuddy可以,另外.NET的正则表达式可以详细观察匹配过程
June 17th, 2012 at 6:30 am
京东搞活动,买了一本。很不错!虽然对RE已经比较熟悉了,读起来还是有很多收获。
另外,发现个小问题,165页验证闰年的代码的逻辑似乎不对,
and int(str) % 400 != 0
应该是
or int(str) % 400 == 0
吧?李卫公同学
June 18th, 2012 at 11:37 am
是的,这里我弄错了,非常感谢指正!
June 19th, 2012 at 11:45 pm
余老师好~到手后非常喜欢这本书,准备细细品读 😀
在第10页 例1-11时 有些疑惑
我在ubuntu的python27环境下执行
re.search(r"^[012]345]$", "2345") != None
得到的结果与书上不符……
>>> import re
>>> re.search(r"^[012]345]$", "2345") != None
False
可书上写的True……
June 20th, 2012 at 2:38 pm
多谢支持!
这里确实是你说的那样,书上弄错了,惭愧。
我会收录到勘误列表里。
June 19th, 2012 at 11:58 pm
以及下面的例1-12 第二个(汗 这样看书好像效率不高)
>>> re.search(r"^[012\\]345]$", "3") != None
False
另外请问余老师有没有专门为《正则指引》提意见的页面呢?wordpress留言总感觉不是很正式,也不适合讨论(页面拉太长了)~
考虑弄个Google groups/Google code?
June 21st, 2012 at 10:23 am
没事,有这样认真的读者,是好事。
这点问题也是写错了,我去改。
今天晚点时侯我专门弄个页面出来,方便大家,你等着看通知。
June 23rd, 2012 at 5:29 pm
余老师好,又来给您留言啦
这次是 Page 29 中间的部分
对这个表达式稍加改造,就可以写出匹配类似tag的表达式……表格的tag是<tag&rt;
这里应该是<table&rt;吧?
然后是Page 30,最下面,我执行
re.search(r"^.*/", "/usr/local/bin/python").group(0)
的结果如下:>>> re.search(r"^.*/", "/usr/local/bin/python").group(0)
'/usr/local/bin/'
比书上多一个”/”
以及Page 69 图4-2 右上角似乎遗漏了”&rt;”?
最后还得请教下余老师,当我执行Page 30下面的匹配”python”字符串的代码时,把search换成了findall,最后莫名返回了一个空字符串:
>>> re.findall(r"[^/]*$", "/usr/local/bin/python")
['python', '']
这是为什么呢?望余老师解答,谢谢~
June 23rd, 2012 at 5:32 pm
自己手打的quote标签和尖括号都乱掉了啊。。-___-#抱歉
June 23rd, 2012 at 5:38 pm
没事,我都能看懂。多谢你的悉心反馈,我现在在外面,明天回去仔细看看你的建议再回应。
July 6th, 2012 at 3:42 pm
48页 3-22 第二个例子 出现了两个“年”
July 8th, 2012 at 4:02 pm
感谢指正:)
July 8th, 2012 at 4:06 pm
我这里看似乎是正确的呀,你确定是48页例3-22吗?
October 27th, 2012 at 12:44 am
在替换字符串里面确实是有两个“年”,第二个“年”应该改成“月”
July 12th, 2012 at 5:52 pm
P10 例 1-11:
这里的 “2345” 应该是 “2345]” 吧.
July 14th, 2012 at 7:31 am
请问具体是第几行呢?
July 14th, 2012 at 12:11 pm
是第一条和第四条语句.
后来又看到两个:
P10 例1-12 第二句:
r”^[012\\]345]$” => r”^[012\]345]$” # 多打了一个 \
P35 图3-1 “可选出现”上方的:
[^/]*[^/] => [^>]*[^/]
还有就是18楼说的两个”年”我也看到了: r”\1年\2年\3日”
July 14th, 2012 at 9:00 pm
噢,确实是写错了,多谢指正。我已经都收录到勘误列表里了。
August 4th, 2012 at 10:41 am
以下内容,请余老师确认:
P5 “所以在re.search()之后添加判断返回值是否为None,如果为True,则表示匹配成功”这里应该为“
所以在re.search()之后添加判断返回值是否不为None”吧?
P10例1-12中的第二个,正则已经是原生字符串,是不是多了一个反斜线?
P14例1-20 Java和.NET的结果好像都反了
P20表2-3 self-closing tag的正则与前一段的描述不一致。前面说“注意:这里不是/]+/>”,而表
中确是这个
P21第一行的匹配open tag的正则与P22例2-9中匹配open tags的正则不一致
P35图3-1中的正则的中间部分跟左边文字描述的正则不一致
P38中说“现在有些邮件服务商也允许用户名中出现点号等字符了,这种情况复杂些,此处不做考虑”,
但下文在说用户名的时候却考虑到了
P40“其实,问题可以这样解决….”这一句中少了一个“量”字,“再将它转换为整数类型的变量x”
P43最后一行,应该为”针对多选结构(option1|option2)”
P48例3-23最后一个例子的结果少了中括号
P52例3-30第一个例子结果为空吧?
P52例3-31第一个例子的分组数不足10
August 5th, 2012 at 9:36 pm
惭愧 & 非常感谢你的细心指出,我都收录到勘误列表里去了。
October 9th, 2012 at 5:28 pm
余老师,我说一些前面没有被指出的错误吧!
引子:第 IV 页的 re.search 和 re.findall 两个函数中的 pattern 和 string 都写反了
P3:例 1-3 中关于 Python 的说明一行”能匹配则返回 RegexObject”,应该是”Match object”
P5:第二段中第三行中“请参考第 241 页”,应该是“21 页”吧
P34:例 3-3 中的第二个 re.search 中 re.search(idCardRegex, “1101018001017016”) != None 的结果应该为 False,因为给定的数字是 16 位的,而非 15 位
P38:第二段结尾部分中,邮箱的用户名不可能为空吧?所以 {0,64} 最好改为 {1,64},同理还有第 39 的相关部分;还有 38 页的前一部分用 [\w.]{0,64} 来匹配用户名,但是到了 38 页的最后一段和 39 页的例子当中,却变成了 [-\w.]{0,64},多了一个 ‘-‘,我记得邮箱中好像不允许出现 ‘-‘ 的
P40:第一行代码 re.search(idCard, “1101018001017016”) != None 的结果应为 False
P41:表中最后一行对分钟的匹配 (0?[1-9]|[0-5]\d|60) 中间出现了重复,改成 (0?[1-9]|[1-5]\d|60) 估计更好一点
P41:最后一段,“仔细分析 tag 中可能出现 > 它只可能作为属性…”该句中”它”前面应该加一个逗号
October 15th, 2012 at 9:55 pm
抱歉回复晚了。
非常感谢你的细心回复,这些地方确实是我弄错了,惭愧,我已经把它们全部收录到勘误列表中了。
如果你看到其他错误,请继续告诉我。
另外,希望这本书对你有用。
October 9th, 2012 at 5:31 pm
刚才的回复中,
“P40:第一行代码 re.search(idCard, “1101018001017016″) != None 的结果应为 False”
应该改为“P40:第一行代码 re.search(idCardRegex, “1101018001017016″) != None 的结果应为 False“,一不小心写错了。。。
October 24th, 2012 at 6:29 pm
老师您好,在《精通正则表达式》P162 页中有个测试,就是[0-9]* 这个正则表达式是否会保存 a ▲1234 num这个状态的问题。我测试了一下,我使用ab[0-9]*123cd依然能够匹配ab123cd,这也就说明它是会保存该状态的,但是在P164页的答案中却说不会保存?麻烦您解释下
November 6th, 2012 at 5:45 pm
你好,这里书上说的是没错的。
用[0-9]*匹配a1234,其结果是可以匹配,但匹配的字符串是空,实际上就是a之前的空字符串,整个匹配到这里就结束了,不会继续试探,所以不存在状态a ▲1234 num。
用ab[0-9]*123cd能匹配ab123cd,前面新增了ab,所以[0-9]*开始匹配时,是从1开始的;如果你需要类比,则应当用ab[0-9]*123cd匹配aba123cd,这样看得很明显:)
October 26th, 2012 at 9:35 am
余老师您好,73页表达式匹配hostname中疑似发现一个错误。
原文:
(?=[-a-zA-Z0-9.]{0,255}(?![-a-zA-Z0-9.]))((?!-)[-a-zA-Z0-9]{1,63}\.)*((?!-)[-a-zA-Z0-9]){1,63}
我认为第二段的(?!-)[-a-zA-Z0-9]不应再加上括号,否则环视(?!-)对每次[-a-zA-Z0-9]匹配都生效,所以不能匹配形如foo-bar的hostname
正确的应该是
(?=[-a-zA-Z0-9.]{0,255}(?![-a-zA-Z0-9.]))((?!-)[-a-zA-Z0-9]{1,63}\.)*(?!-)[-a-zA-Z0-9]{1,63}
望确认。
October 27th, 2012 at 9:41 pm
你说的没错,感谢指出,我已经收录到勘误列表里了。
October 26th, 2012 at 3:10 pm
补充
64页中间一段中
\Z和\的主要区别在于:
应该是
\Z和\z的主要区别
October 27th, 2012 at 9:38 pm
是的,这里确实是我写错了,非常感谢你指出,我已经收录到勘误列表里面了。
October 29th, 2012 at 10:40 pm
老师,麻烦您回答下23楼的问题,谢谢
November 6th, 2012 at 5:45 pm
已经回答了:)
November 11th, 2012 at 10:25 am
余老师,最近有发现了一些小错误,可能与上面的某个重复,T_T。
P43,中间部分,“正则表达式是(jeff|jefferey)还是(Jeffrey|jeff),结果是…”这一句如果要与下面例子对应的话,应该改为“正则表达式是(jeff|jeffrey)还是(jeffrey|jeff),结果是…”。
P49,倒数第二行中的表达式“”前少了一个“/”,应该改为””。
P55,3.4节最后一段,“为了使代码简洁和易于”,后面好像少了一些内容。
P56,例3-36中,第二行与第一行重复,第三行的“# => True”应该删掉;该页的倒数第三行的正则表达式中,”{2″之后少了一个”}”,应该为”{2}”。
P60,例4-2的结果不对,应该为“tomorrow I will wear in brown standing in row 10 next to the rowdy guy”。
P62,例4-3的第一行正则表达式中,“last line”前面多了一个”\r“。
P63,例4-4第一行中,“ast line”前面少了一个“l”。
P71,例子4-17下面一段,“其中(?!\一种组合”,读起来有点不知所云。
P75,例4-21中的(?!=ab)应为(?<=ab)。
P78,中间的例子(原本编号应为例 4-23)没有编号,这就造成了P79中第一段最后一行“具体的例子可见例4-24”和该页最后一段的“代码见例4-25”指向错误。
P87,第二段下面的正则表达式结尾少了一个“$”;例5-6中的“# enable multiline and extended mode”去掉“multiline mode”;下一行的“# start of whoe regex”应为“# start of whole regex”,同理还有P88页的开头。
P88,表格下面那一段的第一行“例5-6同时指定了…”应为“例5-5同时指定了…”。
P90,例5-7中最后一句的执行结果部分,后两个词各多一个“B”。
P91,例5-8下面一段第二行“\1不在区分大小写模式…”应为“\1不在不区分大小写模式…”,第三行“\1处在区分大小写模式…”应为“\1处在不区分大小写模式…”。
P98,表6-7下面那一段的倒数第二行,"b)"实为"c)"。
P101,例6-9的最后一行,“re.search(r"[()", "(") != None”应为“re.search(r"[(]", "(") != None”;下面段落的倒数第三行,“它可以匹配除^、a、b之外的任何字符”,应该是“它可以匹配的字符是^、a、b”。
P102,6.2.1节的例子中的最后一行,正则表达式周围没有包含在两个分割符内,一般取分割符为"/"。
P107,表6-10的第三个正则表达式“(ab)+”应该是“a+(bc)”。
P116,例7-9下面的一段的最后一行,“\s匹配\S不能匹配的字符”虽然说法没错,但是如果与前面对应的话,改成“\S匹配\s不能匹配的字符”好一点。
P118,例7-12下一段的第二行,"\b\regex\b"应为"\bregex\b"。
P119,倒数第二段的参考页应该是253页,倒数第一段的参考页好像应该是234页。
P120,第一段的参考页好像应该是第6页,而不是105页。
P135,脚注1中的页面引用出了问题,我感觉应该是144页。
P136,最后一行,“需要关注只是”,改成“需要关注的是”好一点。
P144,第三段的否定逆序环视写错了,应为“?<!”,书上写成了“?!<”。
P147,表格中关于 Python 的部分,Python 中没有 re.find 这个函数,我感觉您的意思好像是再说 re.findall,而后面的“逐步进行”应该为“一次性进行”。
P148,例9-3的题目写错了,应该是“函数式处理…”。
P163,例9-14的第二行中的正则表达式好像多了一个"."。
P165,例9-16中的正则表达式感觉还是不能拿来判断闰年,因为同为闰年或者非闰年时,为返回不同的结果;我觉得改为
"return int(str) % 400 == 0 or (re.search(r"\A\d{2}(?!00)([02468][048]|[13579][26])\Z", str))"
可能会好一点;但该表达式也不是通用的,因为它不能判断五位或以上位数表示的年份,我尝试用多选分支写了个判断闰年的通用表达式,但是非常复杂,感觉失去了使用正则表达式的意义。
P239,最后一段的否定逆序环视写错了,应为"(?<!…)"。
P245,第一段的 re.searh 应该全部为 re.match,最后一句的执行结果为 False。
P247,倒数第二个正则表达式的执行结果“One TWO THREE”应为“One Two Three”。
November 19th, 2012 at 12:02 am
Hello,非常感谢你指出的问题,我已经全部收录到勘误列表里去了。
在本书繁体版要面世之前,可以解决这么多的错漏,真是高兴又惭愧。
November 11th, 2012 at 10:28 am
P49,我刚刚说的有点问题:倒数第二行中的表达式“”前少了一个“/”,应该改为“”。
不过,虽然有点小错误,这本书深入浅出,看完后还是受益匪浅的,谢谢余老师。
November 11th, 2012 at 10:31 am
哇,原来上一句是被blog自动给拦截了,T_T。总之就是P49页的倒数第二行的正则表达式有点小问题,余老师应该可以看到。
November 11th, 2012 at 10:43 am
同理,P60的html标签也被转义了,不过老师应该能发现错误。
December 11th, 2012 at 11:53 pm
余老师您好,以下是我根据您博客中最新的勘误表修改后发现书中的一些问题。
下面是从excel中复制出来的,格式有些乱。
页数 页内位置 修改前 修改后 说明
15 1.8节第二段第二行 Per Perl
48 例3-22上两行 原生字符串(P93) – 应为P9或者P96
56 例3-36 – – 前两行相同
61 第二段第二行 具体情况(P59) – 应为后边Unicode处某内容
65 例4-10第三行 lin1 line1
65 例4-10该页倒数第三行 lin1 line1
68 4.3第二段第一行 ][^>]*> ]*> 保持和第二章勘误的修改一致
69 图4-2上数第二段 – – 最后一个单引号格式与前面的不统一
69 图4-2上数一段 – – 最后一个单引号格式与前面的不统一
69 图4-2中间的表达式 (‘[^’]*’ “[^”]*” [^'”>])+ (‘[^’]*’|”[^”]*”|[^'”>])+ 中间的表达式缺少了|
70 图4-3 – – 第二行和第四行的匹配位置反了
110 注释1 – – 书中标注的是第一行的ASCII编码后边,注释内容是Unicode编码,应该改为第二行Unicode编码后
118 最后一行 表7-4举列列出 表7-4举例列出
141 第5段最后一句 所以下面几种讨论“不超过63个字符”部分的匹配 – 但是下面讨论的是不出现两个连续的点号的匹配
143 第二段第二行 精确是则要保证正则表达式 精确则是要保证正则表达式
147 表格下第二段第一句 如果使用函数式正则表达式采用的是面向对象式处理 如果正则表达式采用的是面向对象式处理 应该没有“使用函数式”几个字
150 第二组列表下一段第三行 。, 。 最后有一个。和一个,相连
150 第三组列表(1) (?=\A.{6, 12}\z) (?=\A.{6,12}\z) {6,12}中间多了个空格
154 第一行 同时需要留下的部分 同时留下需要的部分
157 代码下面一段第二行 deletgate delegate
158 倒数第二行 将它设定为一个小于n的正数,则会进行n-1次切分(只有Python是例外,它会切分n次),返回数组的最后元素包含了“正则表达式第n-1次匹配右侧的所有文本” – 这里第一次用的n是指最多能切分的次数,而后边的n是指设定的切分次数,前后n的含义不统一
162 9.4.1第三行 如果只需要查找;同样, 这中间应该少了部分内容
162 9.4.1第三行 如果只需要判断字符串开头以某个固定字串开头,以某个固定字串结尾 如果只需要判断字符串以某个固定字串开头,以某个固定字串结尾 应当去掉“字符串开头”中的“开头”两字
234 第一段最后一行 因此\d也可以直接写成字符串\\d 因此\d也可以直接写成字符串\d 多出了一个字体错误的\
235 表格中的忽略优先量词 ?* ?+ *? +?
240 第一段代码后两行 – – 注释中的#格式有误
245 14.3.6标题 re.findall(pattern, sting[, flags]) re.findall(pattern, string[, flags])
247 倒数第二行代码 – – 回调函数toUpper在上文中没有出现
勘误12行 页数 25 35
勘误14行 页数 31 35
勘误17行 页内位置 第2段 第1段
勘误54行 页内位置 5.4倒数第3行 5.4倒数第3段
勘误54行 修改前 例5-6同时制定了两种模式 例5-6同时指定了两种模式
勘误57行 页内位置 例5-8下面第1段第2行 例5-8下面第1段第3行
勘误62行 页内位置 例6-9下面一行的倒数第3行 例6-9下面一段的倒数第3行
这本书写得很好,以前对正则表达式总是一知半解的,每次用都要现查,学的一点都不彻底,这回很多东西都弄明白了,感谢余老师。
December 12th, 2012 at 9:50 pm
Hello,感谢指出。
你能直接在Excel中标注,然后发给我吗?我给你发邮件了。
December 24th, 2012 at 5:31 am
堪误表中第12行标注的第25页的例3-4,实际上应该是在第35页,堪误表里的页码写错了。
December 24th, 2012 at 5:35 am
刚刚发现,楼上的同学已经指出同样的错误了,呵呵,发重了,不好意思。
话说,余老师有没有考虑过用Git管理书稿?《Git权威指南》的作者蒋鑫老师在书中说他的书稿直接就是用Git来管理的,似乎效果不错,堪误也比较方便,呵呵。
December 30th, 2012 at 10:50 am
用Git来管理是个不错的主意,不过按照国内出版行业的现状,书稿是.doc格式的,用源代码管理工具的好处并不太大,所以就没选用。
勘误倒是可以考虑用git来管理,我考虑一下吧:)
December 24th, 2012 at 6:41 am
余老师,您好,我想请教一个问题:《正则指引》书中第32页第1段第2行说想匹配点号本身,必须将它转义为\.。但是第39页例3-8中的emailRegex = r”^[\w.]中却没有使用转义字符转义点号。可是我在计算机上实际测试发现这样写的运行结果并没有错误。请问为什么这里不需要转义也可以使用点号匹配小数点,而不会把*号、#号之类的符号匹配上呢?谢谢!
December 28th, 2012 at 5:39 pm
找到了答案,原来.在[]内不需要转义,详见这里的讨论:http://stackoverflow.com/questions/10397968/escape-dot-in-a-regex-range
根据这个网页的说法:http://www.regular-expressions.info/reference.html,Any character except ^-]\ add that character to the possible matches for the character class.
December 30th, 2012 at 10:48 am
噢,恭喜。其实点号.在字符组[]内部是不需要转义的,这一点在第55页,3.5.1“转义”一节介绍了,你看是否介绍清楚了?
February 9th, 2013 at 3:13 pm
余老师,您好想问一个问题:正则表达式是否可以匹配非段落换行(不影响段落结构)?若可以,那该如何匹配?谢谢!
February 9th, 2013 at 11:25 pm
你好,请问你可以举详细的例子说明吗?我目前还没完全理解你的意思。
February 10th, 2013 at 3:45 pm
http://www.zhihu.com/question/20723881
February 10th, 2013 at 10:22 pm
哦,这样就清楚了。
这个问题,你首先应该把要处理的文本保存为纯文本形式(不可以有富格式),然后查证换行符的类型(到底是\n,还是\r\n,以下假设是\n)。
观察可知换行符有两种:一种是段落的换行符,通常表现为两个连续的换行符;一种是非段落的换行符,通常表现为单个连续的换行符(之前和之后都不是换行符)。
要去掉的是后一种换行符(去掉这个字符,两行的文字就“连起来”了),所以正则表达式应该是(假设换行符为\n):(?<!\n)\n(?!\n),把它替换为空字符串即可。我用python测试了没问题,你试试看。
March 4th, 2013 at 10:29 pm
第20页表2-3第一行
][^>]*>
勘误说要把第一个方括号里的>去掉,为什么呢?
这样岂不是>也可以匹配了?
March 4th, 2013 at 10:36 pm
囧,尖括号都没了
我的意思是lt gt gt也可以匹配。
March 9th, 2013 at 8:56 pm
不好意思,这几天都没看评论,我回去好好看一下勘误再回复你,先多谢!
March 13th, 2013 at 10:04 pm
保留>,从这个表格本身来说是没问题的,但之前讲解时,方括号里并没有>,有读者认为文字讲解与表格内容不一致,所以需要修正。
不过,还是多谢你的提醒。
May 15th, 2013 at 8:15 pm
与其修正表格的,修正文字讲述不是更好吗?
March 7th, 2013 at 11:00 am
51页 表3-2中,JavaScript中表达式中的反向引用写法应该为\num,而不是$num
March 13th, 2013 at 10:06 pm
多谢指正!
May 15th, 2013 at 8:02 pm
2012年6月第二次印刷.
P20上说close tag的特点是以。所以对应的是正则表达式是]+>
但这不就能匹配了吗。我想正确的应该是/]+[^>]*>吧。
May 15th, 2013 at 8:09 pm
上面评论的代码有被吞,我改发到Twitter上了,请其他读者忽略.
May 15th, 2013 at 9:03 pm
P29 第七段:
之前匹配JavaScript的表达式<script language=…
是type不是language,真奇怪勘误表怎么没提到这个.
May 26th, 2013 at 2:10 pm
噢,这里确实是写错了,多谢指正,勘误列表我已经更新了
May 15th, 2013 at 9:08 pm
P29 尾注的第二个关键词少了右尖括号,且阴影排版效果不对.
May 26th, 2013 at 2:11 pm
这里也是错了,多谢指正
June 21st, 2013 at 11:25 pm
62开始倒数第二个的阴影效果有误
66用\s+$不是连同换行符会删掉吗?
69图4-2的tag content少了|
72 中英文混排前面少了空格
73 例4-20上面表达式里的第一个句号少了转义符号
275 行開頭添加#”最好加“所有行”前綴。倒數第二個表達式後面的i頗為多餘。
August 18th, 2013 at 4:27 pm
有其他勘误表整理页吗? 这个页的反馈没整理过,太乱啦,没法查
我暂时看了一点点,有以下问题
P21 open tag 匹配方式 /]*> 这样就匹配不到自闭标签的吧
P38 邮箱匹配之用户名 tian@gmail.com [\w._]{} 应该为 [\w\._]{} 而且上面的文字说不考虑用户名含点的情况,例子却有了
August 18th, 2013 at 4:29 pm
留言里字符被过滤了? tag 标签 [^/][^>/]*
August 21st, 2013 at 8:50 am
有的,请看这里
https://www.lifesailor.me/%e3%80%8a%e6%ad%a3%e5%88%99%e6%8c%87%e5%bc%95%e3%80%8b%e5%8b%98%e8%af%af
October 7th, 2013 at 2:18 pm
余老师,
p214页面,讲解php 的preg_match函数的时候,
下面介绍正则表达式….
preg_match(‘/\d/’,”1″);
preg_match(‘/\d/’,”a1b”); //=>false
//如果是数字1就是true ,如果是字母l就是false
//这里容易混淆啊
October 11th, 2013 at 3:11 pm
1和l是有点容易混淆的隐患,但是这里印刷非常清楚啊,不是吗?
November 7th, 2013 at 5:48 pm
235页的表格中,最后一行
Pytho里面的忽略优先量词应该是 ?? *? +? {n,m}?
问好应该在后面
November 7th, 2013 at 5:49 pm
抱歉,是Python
November 10th, 2013 at 7:35 pm
记下来了,非常感谢指出!
March 14th, 2014 at 5:51 pm
你好!
我购买了《正则指引》(印次:2012年6月第2次印刷)。也从这里下载了勘误表。拜读之后发现了另外二十个疑似笔误。已整理在电子表格里。请给我发个电子邮件以便我把电子表格发给你。
March 15th, 2014 at 5:30 pm
谢谢支持!
已经给你留言的邮箱发邮件了,请查收。
January 14th, 2016 at 4:07 pm
对勘误的excel的勘误
1. 标记为25页 例3-4第3行 的,实际上是35页
2. 标记为31页的 图3-1 实际上是35页 (3.1章)
3. 标记为43页的 例3-5 实际应该是 例3-15
另外,. 在[]里不需要转义,55页没有相关说明 (我手里的版本是2012年5月第一次印刷)
虽然这些勘误看得磕磕碰碰,书内容本身确实非常棒,感谢
January 21st, 2016 at 3:14 pm
谢谢细心指出。我已经更新了勘误表了。很高兴这本书能帮到你。