- 论坛徽章:
- 5
|
以前用过 dos 的 glob 匹配,觉得那个功能很好用,后来使用 word 时,觉得它的查找替
换功能也十分便利,还支持“弱智的正则”(这是现在的看法了,当时觉得很“高级”很NB)。
随着自己对查找(匹配)的要求越来越高,就想,要是有一种更加“聪明”更加“智能”的
搜索方法该多好啊。直到有一天偶然碰上了正则表达式,“这正是自己苦苦寻找的好东西
啊”,真是相见恨晚!
正则无处不在,完全可以这样说。它是一种搜索模式,它存在于我们每天的生活中,存在
于世界的各个角落,无时无刻。
时刻离不开正则:使用 shell 命令(如 grep, sed, awk……等等)时,编辑文本时,搜索
数据时……UNIX 下的各种工具几乎到处都可见正则的倩影,一旦了解了正则的基本知识,
就会大幅度地提高效率——操作的效率和代码的效率。甚至是当你寻找某个人的时候,其实你
也是在使用正则。
比如,你曾经编辑一个文件,现在忘了存放在哪个目录了,如何快速从千万个文件中找到它?
grep! 指定恰当的正则,grep 就会快速地帮你找到你要的文件。
你想把代码中多次出现的某个函数名修改为另一个更加合适的名字,不要愚蠢地手动修改,
编辑器都有(如果没有,你还用它干吗?)支持正则的全局替换命令,一个命令就好了。
我正在用vim写这个贴子,把中文的句号(“。”)全部误写成“.”。不用担心,不用管它,
最后用一个命令:%s/\./。/g全部替换就好了。(我的文本里不需要“.”,除非用来举例的
这几个。)
应用的例子举不胜举,但万变不离其宗,本质就是匹配(查找)。
不同的工具所支持的正则(正则引擎)也有所不同。大体上说,大同小异。
最好先易后难,从学习比较简单的 POSIX BRE 和 POSIX ERE 开始, 通过grep学习基本的
正则,对正则有一个基本的感性认识。
掌握了正则的基础后,再学习其它工具的正则就显得简单容易多了。不过,碰到问题时你
还是要参考相应工具的手册,也许该工具有本身的正则扩展或比较特殊的功能。要精通正
则,还需要不断地努力。
Perl 应该是正则之王。如果你喜欢正则,想体验正则的强悍,那你不能不了解 Perl。
|
|