精通正则表达式

学到不会忘

博文视点的张春雨编辑告诉我,八次印刷的《精通正则表达式》已经全部售罄了, O’Reilly 与电子工业出版社续签了版权合同,准备重新上市,让我写一点东西。 该写什么好呢? 2007 年 《精通》上市时,我还在中关村,天气好的时候可以望见颐和园的佛香阁;而现在,窗外景色已经换成了珠江边的小蛮腰;对正则表达式的使用,也从随手拈来变得生疏——许多问题需要翻查《精通》,翻查自己写的《正则指引》。究其原因,与正则表达式直接相关的开发做得少了,古话说“勤则立,嬉则荒”,就是这个道理。 荒是荒了,毕竟还没荒废,虽然有很多细节需要查阅,但是我很清楚,某个问题能不能用正则表达式解决,该怎样解决。或者说,虽然手上生疏了,心里其实没有忘记,而这一切,归源都是之前死啃过《精通》的缘故。 在阅读《精通》之前,我已经查阅了网上的不少资料,对正则表达式有了基本了解,能像模像样地解决一些实际问题,可算“够用”了。这时候遇见《精通》这样“现实价值不那么大”的书,能静下心去阅读,其实带着点毕业不久的傻气,只是单纯想把它弄懂搞透。所以,遇到匹配原理这类看来没多少实用价值的知识,还会愿意花时间去揣摩、研习。回头想想,也正是因为当时有这种傻气,可算是意外的收获:工作中经常需要学习一些工具和原理,虽然当时也“学会”了,但不久就忘个精光;相比之下,正则表达式却是学到了“不会忘”的程度。更典型的例子是游泳,几乎人人都可以做到“一朝学会,终身不忘”。同样是“学会”,为什么差距这么大呢? 这个问题我想了很久,最后的答案是,“学会”的定义是不同的。 通常我们说“学会”了某项技术、某门语言,意思是“凑合能用”,或者说“可以对照文档( Google )解决问题”的程度——你用 Python 解决了一个问题,就说明你“学会”了Python ,哪管是步步 Google ,还是照抄现成的代码。而我们说“学会”了游泳,意思是可以在水里行动而不沉下去,更重要的是在游泳时不需要时刻背诵各种口诀:吸气—伸手—划水—蹬腿—抬头—呼气……,如果你在泳池里还要时时谨记这些口诀,是绝对谈不上“学会”的。 两者虽然都叫“学会”,其实相差迥异:第一种“学会”是“照猫画虎”,第二种“学会”是“融会贯通”,虽然都可以解决问题,但从第一种“学会”到达第二种“学会”,其实需要经历漫长的过程。而且,两种“学会”都能解决问题,所以在达到第二种“学会”的漫长过程中,你很可能感觉不到自己的进步,反而会困惑继续学习的意义乃至放弃——既然能对着文档操作,既然有现成的资料,为什么要去理解背后的原理呢。 对我来说,第二种“学会”的好处是显而易见的,最重要的一点就是不会忘记——学习的时间增长一倍,遗忘的难度将会增加十倍、二十倍甚至一百倍。这些年来,我见到了太多这样的例子:有人每次用到正则表达式都会抓狂,都要四处极力搜索、反复盲目尝试,花很长时间才能凑出、蒙对解决方案;另一方面,他们又不愿意花时间潜心学习《精通》这样的经典。因为反复遗忘,需要反复学习,最终浪费了大量的时间。…

13 years ago

《精通正则表达式》第四次重印

出版两年之后,《精通正则表达式》马上要第四次重印了,这个消息很是让我兴奋。 我读大学的时候,有幸接触到侯捷老师的许多文章,尤其是他谈关于选择技术书籍的言论,感觉受益匪浅——正是从此,我深刻认识到,“学习”的宾语不应该是“教材”,而是“知识”。认识到这一点,就豁然开朗了;当然,也无比真切地知道了好的书籍是多么重要。 另一方面,我也深信,总的来说,知识的价值是在传播中实现的。我经历过“有了新的收获自己保密,一人独享”,也经历过众人把自己的心得拿出来分享、彼此协作的环境,两厢对比,后者提供的满足感远远超越前者。因此,有更多的人迅速学会“卑之无甚高论”的正则表达式,不需要重走我自己当初学习的弯路,对我来说,也是一种不小的满足(相比之下,帮人写各种表达式所得到的满足,实在是“很小很小”)。 在这里还要感谢博文视点的编辑许莹,她细心地把目前勘误列表列出的所有错误都做了订正。因为《精通》一书中存在的错误,始终是我的一块心病。 另外,要兑现我年初的计划,今年要写一本关于正则表达式的书,正好在这里征集大家的意见:你们是期望它更加“下里巴人”,包括Word, EditPlus等等常用软件的应用例子,以应付更广泛的工作呢;还是希望更加“阳春白雪”,与狭义的“IT行业”(也就是开发)靠的更近呢? 或者有什么别的想法,还请不吝赐教。

15 years ago

《精通正则表达式》勘误列表Excel版

承蒙各位读者喜爱,《精通正则表达式》2007年出版至今,已经三次印刷了。不少读者在来信提供勘误建议的同时,也反映原有的勘误列表结构不够清晰,勘误没有区分版次,使用起来不够方便。每次收到这样的来信,我都深感惭愧。 所以我制作了Excel版本的《勘误列表》,列出了到目前为止收集的所有勘误,并列出各个版次所对应的勘误,希望能给广大读者提供方便。 《精通正则表达式》(第三版)勘误列表下载:MRE_errata.xls P.S. 要感谢博文视点的晓菲,她帮我调整了Excel的版式。

16 years ago