用了5年正则表达式了,却没真正窥见其大门,只要复杂一点的表达式就看不懂,以至于错过一种强大的解决问题的思维。
其次我内心一直想应用爬虫技术去实现很多有趣的东西,苦于正则不够精通和深入。
几年前看李笑来的一本关于和时间成为朋友的书,里面有一段记忆深刻:他虽然是英语讲师,但是他早年学习了python,并且用这门语言写了一个脚本去往年的英语真题库里统计最常用的英语词汇,然后根据这些词汇写了一个常用英语词汇书,这本书给他带来的收益超过了100万,而且每年销量还在增加。这就是典型的知识就是力量。
我思考一个问题,这样的脚本真的不难,唯一不确定的是英语真题库是他使用爬虫技术抓取过来存到数据库还是自己网下下载存到数据库,而比较核心的统计每一个单词的出现次数的原理就是正则表达式,用好了它,什么文本什么操作都能统计和处理。
我认识的很多人,当然也包括我,小看它了,相当于小看天下英雄了,会用它的人很多,真正懂它的原理和真正理解它的人很少。大多数人都是百度复制的。比如最常用的验证邮箱地址格式、电话号码格式等等,我肯定90%的人是看不懂的。
这些我在图书馆找到了答案,学会了深刻的原理和本质,多复杂的语句也能看懂了,从一堆复杂的文件里面搜索自己想要的。
手工比对是麻烦的,它需要大量的时间和容易出错。另外,一个人一次只能搜索和打开一个文件,对于正则匹配来说,一次可以匹配查询定位所有文件。正确的命令行用法可以提高很多倍效率。
其次在开发中,如果优先以正则思维去思考,相当于多了一种解决问题思路。
什么是快的本质,最短时间完成,最简洁最方便。桌面和图形化是后来才有的。正则表达式是一种处理文本的规则,我们在处理所有复杂对象的时候都可以考虑把它当做一个字符序列来处理,比如现在的json格式字符串,当做了这步之后,你可以尝试使用"正则表达式思维"去处理它了。你对它的理解越深,你越感觉到对字符处理上面你是神,因为你使用规则去创造更复杂的东西。
这些看似不需要掌握好和精通的东西让我们错过了很多,我们要再次拾起编程的神器。
之前我写过一篇文章关于使用快捷键把编程效率提高5到10倍的。正则也是这样的强大的思维工具,大概率之下,甚至可能你的代码会精简10倍甚至100倍,这是道和术的区别。它更像一门优雅的脚本语言。
另外程序员要掌握的(很多人觉得可有可无的)
工具类型技术是linux shell脚本和sql存储过程。不要以为应用类型程序员不需要掌握这些东西,天知道它们的魅力和作用是什么。
shell脚本学会了意味着你可以使用简短的一个文件代码管理操纵部署运行任意多台服务器,意味着你的服务器的操作随心随意,也意味着你的能力兼容了所有不同linux内核的技术。
程序员不要有错觉:图形化和鼠标点击就是巨大的错觉。计算机能认识和执行的是命令,任何操作都是在执行命令,即使图形化界面也是通过无数的命令画出来的。所以计算机的本质就是命令行窗口,其它操作系统都是虚拟出来的。当我们直接用命令脚本跟它交流的时候就相当于直达本质了,只有很少的转换。
鼠标点击打开一个文件好像觉得平淡无奇,理应如此,但是为什么使用命令行窗口敲几个命令打开一个文件别人就觉得厉害,本质执行的东西都是一样的。
曾经有人在黑乎乎的linux文本窗口用shell命令打开了摄像头并且开启了视频录制功能,征服了一群打鸡血的男孩,他们想不明白怎么能在原始社会使用坦克飞机呢?他们眼中以为只有操作系统能操纵软件,只有鼠标点击才能运行软件……
黑乎乎的dos窗口才是最本源的地方,那也是程序员内心最纯净的圣地,那里是不可能有广告的。它也像一个黑色的房间,只有代码和你存在,那里永远不会听到鼠标点击的声音而只有键盘敲击的声音。
关于鼠标和键盘的论证,我比喻成令狐冲和天龙八部的任何一个内功深厚的人比武,剑术再厉害是破不了内功的,站着让你砍都没用,连真气层都刺不破。
脚本大概就是这样的内功,它离数据结构算法、设计模式这样的本源已经很近了。
网友评论