September 2007
Sun 30 Sep 2007
Sat 29 Sep 2007
图书馆,盖好之后就成了我花时间最多的地方,经常是在四楼左侧坐一整天(我总觉得这个楼像变形金刚)
从宿舍去图书馆的路,每天晚上闭馆之后必然从这里经过,寒冬的夜晚走起来是一种考验
校门,图书馆正对的就是校门,我总觉得晚上有股阴森之气,好像灵堂(冬天的晚上,可以吓死人)
学校对门书报亭的老马,寝室的书报都在他那里订,给统一打9折,三年过去了,还认识我
Sat 29 Sep 2007
Sat 29 Sep 2007
Sat 29 Sep 2007
Sat 29 Sep 2007
Thu 27 Sep 2007
远山环绕

下过雨的早晨

Wed 26 Sep 2007
当年,斯大林同志对高尔基同志的《姑娘与死神》的批示,曾引起两名教授在《真理报》上撰文论证:斯大林同志之所以少写一个字母,是因为新生阶级的爱情截然不同于腐朽没落的资产阶级爱情。最后领袖再次批示:笨蛋,此系笔误。
最近,贾平凹老师又为铁凝老师的题词举行了诠释。我们的表现,确实还远远比不上当年的老大哥。
奥威尔的《1984》,最后一句话是:他战胜了他自己,他热爱老大哥!看来,我们的某些同志,确实还无法战胜自己,境界离老大哥还差的远呢。

Fri 21 Sep 2007
我已经很少看电视了,但还是能感觉到,最近,荧幕上,关于战争的片子逐渐多了起来,历史题材的片子里,无可避免地会提到几十年前的内战,好像最近,《闪闪的红星》也被拍成了动画片,搬上了荧幕。
《闪闪的红星》,是我印象深刻的电影。上小学的时候,总是听老师提起,潘冬子,胡汉三,很长时间内却没机会看。直到有一天,听说中央电视二台会放,于是厚着脸皮去了另一个并不熟识的朋友家里(那里可以看到中央二台),才第一次看过了这部久闻大名的电影。后来学校开运动会,大合唱必须唱电影的主题歌。再往后条件越来越好,机会越来越多,这部片子,看过不下十遍了吧。
最深刻的印象是色调,明亮的,泛红,灰军装的颜色有些古怪,后来听说,那是因为当时国产彩色胶片技术受限所致,这倒是与那个年代气势磅礴的纪录片保持了一致,也算是时代的色彩吧。
还有两个镜头,一个是冬子无限神往地注视远方,口里念着“红—军—”,整个画面上就只有他充满稚气和向往的脸(后来学了当代中国文艺史才知道,那个镜头是对“三突出”原则的完美诠释);另一个是在最后,冬子举起柴刀,大声喊道“红军战士,潘冬子”,火光跳跃在他的面庞上。
我一直认为,《闪闪的红星》,确是一部经典的影片,尤其是,从艺术史的角度来说(如果从艺术的角度来说,我认为《小兵张嘎》更胜一筹,当然《闪闪的红星》中有两首插曲的调子还是很不错的,浓郁的江西民歌风,很中听)。尽管这丝毫也掩饰不了我的遗憾:纵使是在这样的经典中,宣扬的价值仍然是,彼方杀此方,名曰“杀害”,此方杀彼方,名曰“消灭”,荧幕上的人物高举柴刀,荧幕下的观众高喊一声“好”——这样的教育,怎能培养出具有博爱胸怀,能够反思的公民?看看那部大张旗鼓的《东京审判》,我失望到了极点。
新拍的这些片,据说是更加真实,更加丰富,更加人性化了。人性化是当然的,真实我看得打个问号。曾经问过一个媒体的朋友,说某些官员看起来似乎没以前那么冷淡而可憎了,回答是:其实还是一样的,只是上面布置了,描写他们的时候必须要有方法和技巧。
Fri 14 Sep 2007
因为工作不够细致,最终版本的《精通正则表达式》还存在如下问题,只能以勘误形式发布作为补救了,请各位读者见谅。
如果大家在阅读中发现其他问题,欢迎来信指出。
yusheng.regex@gmail.com
推荐序
vi页, 第1行, “那它就被成为阳春应用”,应该修改为“那它就被称为阳春应用”;
前言
Ⅱ页,倒数第3段,“读这本书以前,我以为自己了解正则表达式,但现在我才真正了解”应修改为“读这本书以前,我以为自己了解正则表达式,但现在我才真正弄明白”
Ⅱ页,倒数第2段,“在其它任何地方都难以找到这样丰富的细节”应修改为“在其它任何地方都难以找到这样完整而详尽的资料”
Ⅴ页,第1段,“来开发引擎的能力,并避免其中的缺陷”应修改为“来发掘引擎的能力,绕开引擎的缺陷”
Ⅵ页,第1段,“[…]表示一对方括号,之间的内容无关紧要;而[…]表示一对方括号,其中包含三个句点”应修改为“[…]表示其间内容无关紧要的一对方括号,而[…]表示包含三个句点的方括号”
第1章
2 页,倒数第2段,“但是它不一定能代表正则表达式在平时解决的那些“不值一提”(uninteresting)的问题。这里的“不值一提”是指这类问题并 不能成为谈 资,可是不解决它们,你就没法继续干活”应修改为“但是正则表达式在平时还用来解决那些“讨人厌(uninteresting)”的问题。说“讨人厌”, 是因为它们不适合跟外人吹嘘,可是不解决它们,你就没法继续干活”
3页,第12行,“^(From|Sbuject):”应修改为“^(From|Subject):”
6页,标题“正则表达式的思维框架”应修改为“理解正则表达式的结构”
9页,倒数第3段,“在搜索HTML代码的头文件时这非常有用”应修改为“在搜索HTML Header时这非常有用”
12页,注4中“作为一个小孩子,那时候我感觉非常受伤”应修改为“当时我还是个孩子,很伤心”
14页,第4段,“匹配一行的起始位置,然后匹配「^From」、「Subject」或「Date」中的任意一个”应修改为“匹配一行的起始位置,然后匹配「From」、「Subject」或「Date」中的任意一个”
15页,第3段,“我使用-i参数的频率很高”应修改为“我经常使用-i参数”
15页,倒数第4段,“>”字符不应该是黑体
17页,倒数第3段,“无论u是否出现,匹配都是成功的”应修改为“无论u是否出现,匹配都会成功”
18页,倒数第3段,“因为它们限定了所作用元素的匹配次数”应修改为“因为它们限定了所作用元素的重现次数”
19页,第2段,“一个字符组是一个“元素”(unit),所以它可以直接加加号、星号等,而不需要用括号”应修改为“一个字符组就是一个“元素”(unit),可以对它直接使用加号、星号等,而不需要括号”
19页,倒数第1段,“每个量词都规定了匹配成功至少需要的次数下限,以及尝试匹配的次数上限”应修改为“每个量词都规定了匹配成功至少需要的重现次数下限,以及尝试匹配的重现次数上限”
20页,表1-2中:“可以不出现,也可以只出现一次”修改为“可以出现,也可以只重现一次”;“可以出现无数次,也可以不出现”修改为“可以重现无穷多次,也可以不出现”; “可以出现无数次,但至少要出现一次”修改为“可以重现无穷多次,但至少要出现一次”
21页,倒数第2段,“这并不是正则表达式的错误”应修改为“正则表达式对此无能为力”
27 页,第1段,“而且说“如果你写一个正则”,“巧妙的正则”(budding regexers),甚至是“正则化”(regexification)”修改为“而且说“如果你写一个正则”,“巧妙的正则”(budding regexers),甚至是“正则化”(regexification)听起来更顺一些。我说的“正则引擎(regex engine)”指的是程序中实际执行匹配尝试的那个部分”
第2章
37页,第1段,“它们都非常不同于“传统”的预言,例如C和Pascal”应修改为“它们截然不同于C和Pascal之类“传统”的预言”
38页,倒数第1段,“运算符==用来测试两个数字是否相等”修改为“运算符==用来测试两个数值是否相等”
40 页,第1段,“我不想在本章中讨论Perl的细节,但是我告诉你用printf(“格式化输出(print formatted)”)可以解决这个问题”修改为“我不想在本章中讨论Perl的细节,不过我还是想说,printf(“格式化输出(print formatted)”)可以解决这个问题”
40页,第3段,“Perl通常情况下不区分整数和浮点数”修改为“Perl一般不区分整数和浮点数”
41页,倒数第1段,“我们发现,这个图让我们很容易地决定匹配之后应该干什么”修改为“看了这张图,我们很容易就能决定匹配之后应该干什么”
46页,补充内容的最后1段,“尽管因为第4章将会解释其原因,字符组的效率通常还是会高一点”修改为“不过根据第4章解释的原因,字符组的效率通常要高一些”
56页,倒数第2行,“^From: (\s+) \”修改为“^From: (\S+) \”
67页,第3段下面,正则表达式“$text =~ s/(\d)(?=(\d\d\d)+(?!\d)/$1,/g”应修改为“$text =~ s/(\d)(?=(\d\d\d)+(?!\d))/$1,/g”,少了一个括号
70页,第2段,所以整个正则表达式的意义就不再是“寻找空行及只包含空白字符的行”,而是“寻找连续、空行和只包括空白字符的行的结合”
应修改为
所以整个正则表达式的意义就不再是“寻找空行或只包含空白字符的行”,而是“寻找空行和只包含空白字符的行的结合”
76页,倒数第2段,“此外,我们的匹配主机名的正则表达式只存在一个“主源(main source)””应修改为“此外,我们的匹配主机名的正则表达式只存在一个“源头(main source)”,”
第78页
示例2-3中第4标注
{\e[7m$1\e[m$2\e[7m$3\e[m ] igx;
应修改为
{\e[7m$1\e[m$2\e[7m$3\e[m } igx;
第3章
89页,第1段,“不支持字符组中的\w(完全不支持\d和\s)”应修改为“在字符组中无法使用\w(\d和\s在任何地方都无法使用)”
92页,倒数第2段,“在极端的情况下,反向引用的“行为”有意义吗?”应修改为“在极端的情况下,反向引用还能正常工作吗?”
95页,标题“函数式处理的例子”应修改为“程序式处理的例子”
95页,倒数第1段,“不过,Java也提供了一些函数式处理的……”应修改为“不过,Java也提供了一些程序式处理的……”
95页,Pattern r = Pattern.compile("^Sujbcet:(.*)",Pattern.CASE_INSENSITIVE);
其中的Sujbcet应写为Subject
96页,第2段,“Sun的package同时提供了程序式和面向对象式的处理方式是常见的做法”应修改为“Sun的package同时提供了程序式和面向对象式的处理方式,这是种常见的做法”
111页,第1段,“常见的例子是大写的ß是两个字符的组合“SS”。这种情况只有Perl能够正确处理”应修改为“常见的例子是,大写的ß由两个字符“SS”组合而成。这种情况只有Perl能够正确处理”
114页,“字符组及相关结构”中,“字符组缩略表示法”应修改为“字符组简记法”
130页,3-11表名“脚本语言中的行锚点”应修改为“若干语言中的行锚点”
131页,第1段,“如果结合上面那一点”应修改为“结合第一点”
132页,第3段,“但是这段程序的执行单位不是一次表达式而是一次匹配”应修改为“但是,循环的单位不是单个的表达式,而以一组表达式的匹配”
134页,“中间一级不过是“语法(syntactic sugar)”,表达方式更美观而已,”应修改为“中间一级不过是用起来更方便而已(syntactic sugar)”
第4章
152页,倒数第1段,括号内,“抑制自己的天性”应修改为“克制自己的本能”
156 页,第3段,“也就是说“不到最后关头不能分胜负(It’s not over until the fat lady sings)”,但这段话又不符合本段的语境”
应修改为
“也就是说“不到最后关头不能分胜负(It’s not over until the fat lady sings)””
156页 第3段 第2行
原文: 即使某个字表达式能够匹配
应改为:即使某个子表达式能够匹配
160页 文字部分的 第5行
原文: 字符串的b之前(也就是当前的位置)匹配
应该为:字符串的c之前(也就是当前的位置)匹配
172页,第2段,“就可以命令正则引擎不必检查它们:「^(?>\w+)」”应修改为“就可以命令正则引擎不必检查它们:「^(?>\w+):」”
第5章
188页 文字部分的 第4段 第2行 结尾
原文: 也不比担心
应该为:也不必担心
191页,代码段中的注释大小写错误,“#利用正则表达式检测wholePath”应修改为“#利用正则表达式检测WholePath”
195页,倒数第1段,“虽然这个表达式比最开始的好得多”应修改为“虽然这个表达式比开头那个好一些”
197页,第3段,“所以,我们得用别的办法来解决”应修改为“所以,得想点别的办法”
197页,第4段,“仔细想想我们想要匹配的位于开始分隔符和结束分隔符之间的文本”应修改为“仔细想想要匹配的位于开始分隔符和结束分隔符之间的文本”
197页,倒数第3段,“如果回溯会导致不期望,与多选结构有关的匹配结果”应修改为“如果回溯会导致不期望的、与多选结构有关的匹配结果”
199页,第5段,“这个正则表达式曾被用作降解忽略优先量词的绝佳例子”应修改为“这个正则表达式曾被用作讲解忽略优先量词的绝佳例子”
199页,倒数第2段,“但它并不正确(其实这三个表达式都不正确)”应修改为“但它并没有错(其实这三个表达式都没有错)”
203页,标题“检查HTTP URL”应修改为“校验HTTP URL”,目录中也应同样修改
205页,代码段注释中,“零个或多个据点分隔的部分”应修改为“零个或多个点号分隔的部分”
210页 最后一行
原文:导致逆序环视(?!44)失败
应改为:导致否定顺序环视(?!44)失败
第6章
225页,第2段,“对于没有转义字符的字符串来说,这样会一次读入整个字符串”应修改为“不包含转义字符的字符串,会被一次读入”
233页,倒数第1段,“所以,对这个例子来说,多选结构要比字符组快22倍左右”应修改为“所以,对这个例子来说,字符组比多选结构快22倍左右”
234页,第4段,“新增的开销大约花费了5s的时间”应修改为“新增的开销大约是5秒”
234页 正文部分第2行
原文:现在,测试字符串只是上面的长度的1/1000,而测试需要进行1000次。
应该为:现在,测试字符串只是上面的长度的1/1000,而测试需要进行1000000次。
246页,第1段,“也能够减少传动装置真正应用正则表达式的位置”应修改为“也能减少传动装置真正应用正则表达式的次数”
266页,第3段,“你就能把这几条推广开来”应修改为“就能把这几条推广开来”
266页,倒数第4段,“事实上,如果点号不能匹配换行符”应修改为“事实上,如果点号能够匹配换行符”
269页,第1段,“不会在匹配时陷入徒劳的尝试”应修改为“无法匹配时会陷入徒劳的尝试”
274页 上数第4行
原文:紧跟在x之后的斜线
改正:[^x]/ 是紧跟在不是x的字母后面的斜线
第7章
293页,倒数第1段,“动态作用域会临时“保护”全局变量”应修改为“动态作用域会把全局变量临时“遮蔽”起来”
296 页,倒数第2段,“为方便起见,我们也可以给本地变量赋一个值 local($SomeVar),这等于把undef赋值给$SomeVar”应修改为“为方便起见,我们也可以给 local($SomeVar)赋值,这等于给$SomeVar明确赋值,而不是使用undef”
299页,第3段,“分散在散落的 local、子程序和本地变量引用之间的复杂交互”应修改为“分布在散落的 local、子程序和本地变量引用之间的复杂交互”
300页,正文第1段,“你可以期望$ 的起点是开始尝试位置的文本,但它每次都是从整个字符串的开始位置开始的”应修改为“你可能认为$ 的起点是开始尝试位置的文本,其实它每次都是从整个字符串的开始位置开始的”
301页,倒数第1段,“明确设定的$1 等变量中,闭括号在最后”应修改为“明确设定的$1 等变量中,闭括号在最后的那对括号”
308页,标题“指定目标运算元”应修改为“指定匹配目标运算元”
326页,第2段,“split 没有返回的部分或全部的文本”应修改为“通常情况下split不会返回的部分或全部的文本”
327页,标题“嵌套代码结构”应修改为“内嵌代码结构”
356页,第1段,“不包含捕获型括号的正则表达式可以不必保存拷贝”应修改为“不包含捕获型括号的正则表达式可以不必保存副本”
361页,第4段,“这很适合检查单个的正则表达式的编译方法”应修改为“这很适合检查单个正则表达式的编译过程”
第8章
368页,表8-3倒数第3行,“对Unicode字符进行不区分大小写的匹配”应修改为“对非ASCII字符进行不区分大小写的匹配”
369页,倒数第4段,“Unicode block的支持要求使用‘In’前缀”应修改为“Unicode区块的支持必须使用‘In’前缀”
371页,第2段,“就我个人来说,更喜欢简称前两个为“pattern”和“matcher””应修改为“我自己更喜欢把前两者简称为“pattern”和“matcher””
374页,倒数第6段,“当前pattern的捕获型括号的数目”应修改为“当前pattern中捕获型括号的数目”
377页 倒数第7行
原文:int end()
次方法返回整个匹配的终点的绝对偏移值
改为:此方法返回整个匹配的终点的绝对偏移值
377页,函数“String gropu(int num)”应修改为“String group(int num)”
388页,最后一段,“即检索范围不等于整个目标字符串”应修改为“即使检索范围不等于整个目标字符串也是如此”
389页,标题“构建扫描程序”应修改为“构建扫描程序的方法”
第9章
410页,第5段,“即用即编译(On-The-Fly Compilation)”应修改为“直接编译(On-The-Fly Compilation)”
410页,倒数第2段,“来进行“即用即编译”的编译”应修改为“来进行“直接编译”的编译”
432页,标题“支持函数”应修改为“辅助函数”
432页,倒数第4段,“还有一些静态的支持函数”应修改为“还有一些静态辅助函数”
438页,倒数第3段,“尽管涌出并不大”应修改为“尽管用处并不大”
第10章
442页,第3段,“十进制转义只能接受两到三位八位数值”应修改为“八进制转义只能接受两到三位八进制数字”
445页,倒数第5段,“第448也给出了一个“不好”的原因”应修改为“第448页给出了一个“不好”的理由”
455页,第3段,“这就是默认的配列方式”应修改为“这就是默认的排列方式”
459页,第3段,“这个简单的例子把HTML中的bold tag全部转换为大写”应修改为“这个简单的例子在HTML中的所有大写单词两端加上bold tag”
459页,倒数第4段,“下面这个扩展的例子把bold tag里的单词变为小写”应修改为“下面这个扩展的例子在添加bold tag的同时把单词转换为小写”
460页的表格,第三行开头应该为“数组 数组”,第四行开头应该为“字符串 数组”





