和武者、侠客相似,程序设计者也需要有贴身常备的武器,而且除了常规武器以外,也需要有像飞刀这样的以巧拨千斤的、小巧但威力巨大的非常规武器,以应不时之需。是的,程序员也和行走江湖的武者一样,经常会遇到不太常见的非常规状况。正则表达式,就是程序员的飞刀。在日常编程活动中,只有它是不够的,但是在很多场合,没有了他,你就会事倍功半,干瞪眼吃大亏。相反,如果你有了它,虽不是时时处处可用,但一旦用上,威力无比。
尝试想象一下,你可能会随时面临这样的挑战:
@ 你需要把一个代码文件中的所有注释行删除掉,只留下纯粹的代码。或相反的要求。
@ 你需要把一个测试结果文件中,所有以字符@加数字开头的行提取出来。
…等等等等,类似这样的场合,你已经无法用最简单的字符串查找和替换来解决问题,因为你的匹配目标不再是一个具体的字符串,而是一个模式,这正是正则表达式最最最最最最擅长的地方,该他出场了。
有相当一部分程序员,根本看不起正则表达式这么个小玩意儿,甚至有很多人根本不知其为何物。特别是从Windows平台起家的。而在Unix平台上,正则表达式会频繁地出现在有文本处理的地方。在Unix/Linux的编程世界里,如果你说你不懂正则表达式,估计会受到鄙视的。在2003年,我工作2年以后,有人正式地给我讲授过正则表达式,从那以后开始重视起来。至今已经7年过去了,这把小飞刀还随时揣在身上,它帮助我度过了无数的难关,现在每天都还在给我帮助,实在是堪称利器。
这篇文章不打算详细介绍正则表达式,而是浅谈其重要性。如果你就是瞧不起正则表达式或不了解正则表达式的程序员中的一员,我要重点提醒你,你正在错过一个重要的武器,多年以后,你必定会后悔的。你可以留心一下你目前常用的文本编辑器(例如UltraEdit,Notepad++, Sublime Text2等),搜索/替换工具等等文本处理软件,越来越多的工具开始完整地支持正则表达式,这是一个必然的趋势,而且足够看出正则表达式的重要性。可以不过分地讲,衡量一个文本处理软件的是否成熟、强大,支持正则表达式与否是非常关键的一点。同理,我再得寸进尺地推论一下,正则表达式也是衡量一个程序设计者是否专业的必备水准之一。
因此,请你千万不要错过正则表达式-这把和小李的飞刀一样锋利的神兵利器。也许,它会帮助你成为第二个小李噢!