虾编
首发于虾编

正则表达式系列总结

此书,已有pdf,欢迎下载

老姚:《JavaScript 正则表达式迷你书》问世了!


用了接近一个月的时间,终于把正则表达式系列写完了。

这是一篇总结文章,算是给读者和自己的一个交代。

首先感谢大家的支持,尤其是给出赞赏的朋友们。

先说说本文要写些什么:

1. 系列目录导航

2. 系列的结构

3. 需要注意的地方

4. 参考资料

5. 个人感悟

6. 系列名称征集

1. 系列目录导航

内容尽量涵盖了正则表达式的方方面面,总共7篇文章。

《正则表达式字符匹配攻略》

《正则表达式位置匹配攻略》

《正则表达式括号的作用》

《正则表达式回溯法原理》

《正则表达式的拆分》

《正则表达式的构建》

《正则表达式编程》

2. 本系列的结构

下面大体介绍一下,本系列各文章都讲述了什么。

正则是匹配模式,要么匹配字符,要么匹配位置。

《正则表达式字符匹配攻略》是讲如何匹配字符的。

《正则表达式位置匹配攻略》是讲如何匹配位置的。

看完这两篇,基本上可以说正则表达式已经入门了。

在正则中可以使用括号捕获数据,要么在API中进行分组引用,要么在正则里进行反向引用。

《正则表达式括号的作用》这一篇主要讲这个事情的。

学习正则表达式,是需要了解其匹配原理的。

《正则表达式回溯法原理》讲述了“回溯”具体为何。

《正则表达式的构建》中的最后一节里,描述了正则表达式工作的流程。

不仅能看懂别人的正则,还要自己会写正则。

《正则表达式的拆分》讲述了如何去阅读一个正则。

《正则表达式的构建》讲述了如何去书写一个正则。

学习正则,是为了在真实世界里应用的。用法和需要注意的地方都有那些?

《正则表达式编程》这一篇,专门解决这个问题。

这7篇文章,两个小时内,应该能全部看完的。

平时的我们一直都是个“收藏家”。

恩,看起来不错,先收藏起来,以后再看。但自己内心都明白,一般都不会再有以后了。

今日事今日毕,勿将今事待明日。你我共勉!

3. 需要注意的地方

只要看任何一篇,就会知道本系列主要讨论的是JavaScript的正则表达式,更精确地说是ES5的正则表达式。

JavaScript的正则表达式引擎是传统型NFA的,因此本系列的讨论是适合任何一门正则引擎是传统型NFA的编程语言。当然,市面上大部分语言的正则引擎都是这种的。而JS里正则涉及到的所有语法要点,是这种引擎支持的核心子集。也就是说,要学正则表达式,不妨以JS正则为出发点。

4. 参考资料

当然本文不是无本之末。主要参考的是几本书籍。

以下书籍中核心章节都认真阅读过,甚至阅读多遍。

《JavaScript权威指南》,看完本系列,再去看书中的第10章,你就知道了什么叫字字珠玑。

《精通正则表达式》,权威且比较杂乱,我阅读的第一本正则表达式书籍。

《正则表达式必知必会》,这是我看的第二本正则,看完后,确定自己算是入门了。

《正则指引》,《精通正则表达式》的译者写的,相对清晰。

《正则表达式入门》,我看的是英文版的,对于已经入门的我,基本没多少收获了。

《正则表达式经典实例》,除了第3章,比较杂外,也有收获,以实例为主导的一本书。

《JavaScript Regular Expressions》,为数不多转讲JS正则的。页数不多,也有收获。

高性能JavaScript 》第5章,我看的是英文版的。第5章,讲了回溯和优化。

使用的工具:

Regulex,一款可视化工具

ProcessOn - 免费在线作图,实时协作

LICEcap – 灵活好用,GIF 屏幕录制工具

5. 个人感悟

始终要动手的

每篇文章里,最后都要提一句:纸上得来终觉浅,觉知此事要躬行。

这是我学习编程最深的感悟,遇到自己模棱两可的都需要敲一遍代码。

要多写文章的

首先,我十分感谢读者。首先在信息这么泛滥的网络里,人家能点击我的文章瞧两眼,都是对其注意力的消费。更何况,还有很多人都认真读了,甚至给我挑毛病,这都是对我的帮助。

写文章的目的,是以教为学。看似为了教,其实是为了学能教会别人才算自己真正学会了,最起码形成了文字,通过了自己的语言逻辑这一关。如果还能有人指出你的错误认知,那样收获就更大了,何乐而不为呢?

很多书中都提到类似的观点,例如《知道做到》《好好学习》《与时间做朋友》《暗时间》等。

以教为学的其他手段

当然,以教为学的手段还有很多,比如翻译一本书。我私下已经翻译了好几本(窃喜^_^)。

可以从薄点的书籍开始,比如100页左右的。基本上使用有道就可以了,也不用要求自己一词一句的翻译,能用自己的话说明白就行了。说到这里,不得不提起,我们的阮一峰大神,在我看来,他就是成功地应用这种模式的。看完外文的文章,理解明白了,用自己的话说一说,再形成自己的简练风格。

恐怕你可能说自己的英文水平不够,没信心尝试。相信我,熟悉了常用词汇(比如literal翻译成字面量)后,配合有道翻译,薄点的书,一天翻译一章是没问题的。当然前提是你懂相关领域,不然是没办法意译的。

最后一种以教为学的手段是,写一本书。写文章是基础,文章多了,自然而言就可以写成一本书。当然,写书强调的是整体架构,所以文章最好成体系。

你看看那些国内专业书籍的作者,一般都事先翻译过几本书的。最起码在前端领域,我就看到了好几个是这么干的。翻译明白了,学会了,用自己的角度去弄出一本书还是相对很容易的。

虽然,我没有写过书,但上述观点,我始终相信是可行的。

本系列标题名称征集

系列虽然写完了,但还没有一个正式的名称。

原先用的是《JavaScript正则表达式火拼系列》貌似没有营销效果。

下面列出几个可选标题

《You Don't Know Regex》

《正则表达式深入浅出系列》

《正则表达式一网打尽系列》

《还不懂正则,我啃键盘系列》

《正则表达式深入分析系列》

《正则表达式全面解析系列》

不知哪个好,或者有无更好的名字?需要大家的头脑风暴。

最后,有任何正则相关的问题,都欢迎在相应原文里留言。

只要在老姚能力范围之内,必做详细解答。

本文完。

编辑于 2018-12-25

文章被以下专栏收录