重新学习正则表达式

最近在写Alfred Workflow,期间遇到了很多文本问题,需要正则处理,于是杠上了正则,虽说正则是在学习任何一门变成语言时都一定会学习的,但是不得不说我的正则水平是渣渣。于是这次借机会重新认真学习了下。这里Mark下我的认知。

正则的价值

记得14年时候就看过一本书,里面有句话很经典,正则即是文本处理领域的瑞士军刀,确实,单反遇到文本处理,确实绕不开,如果能绕开,八成也是错。

如我最近的需求,我需要提取MD文本文件中的多个元数据,正则便是最方便高效的。

正确认识正则

反思之前正则为何一直没有学熟练,是因为犯了一个常见的错误,那就是恐惧,觉得难,尤其零宽断言,向前向后,傻傻搞不清,因为恐惧,就很少实践,久而久之就更不会。但是因为不会运用断言,面对问题,要么不采用正则,要么写出了冗长且错误百出的正则。

最近重新审视学习后发现其实无非就几个细节,断言锁定的是位置,所以就是零宽,而向前还是向后确定的是匹配的方向,而正向还是反向确定的是状态,要还是不要,满足还是不满足。这么去想是不是就简单多了呢。

再整体看正则,元字符用于匹配内容,断言用于位置,再加上分组,重复,贪婪懒惰,其实也就这点东西。

不惧正则,刻意训练正则,最终即会在适合的场景下正确使用正则。

推荐的书、工具

在学习正则时,对于书籍、网站选择上,也是有好有坏的,这里推荐几个我喜欢的。

写在最后

扭转了认识,系统学习后,我想此时开始我才是真正的使用正则吧,回想最近几年对于JS的认识就较之之前不同,正确的认识,刻意的训练,然后在使用中反思它的优缺点,久而久之,自然是熟悉到精通了。