正则表达式(regular expression),是用于处理文本的一种方式,有些地方也将其称为一种工具,而我更喜欢将其理解为一种方法。由于其功能的强大和便捷性,使得很多语言都对其提供了支持(例如perl、Python、JAVA、VB.NET、PHP),同时也包括一些文本处理工具(GUN grep、GNU egrep、GNU awk、GNU sed。我们绝对可以说grep,sed和awk是linux命令行的文本处理工具,不过awk能实现的功能可远超出了我们的想象)。
来说点额外的,关于计算机语言的问题。大家最熟悉的编程语言分类是机器语言,汇编语言,高级语言什么的。不过说实在话,这些在计算机领域的概念里只算是沧海一粟。随着编程语言的发展,现在高级语言又有编译语言和解释语言两类,此外还有很多用于专门领域的语言,例如PHP专门用来显示网页;Perl更适合处理文本;而我们最熟悉的C语言则被广泛用于操作系统和编译器的开发,可谓众多语言各有所长。另外值得一提的是脚本语言(可以说他源于早期的批处理语言或工作控制语言,发展到如今却远远胜于批处理语言),光脚本语言又可以划分出很多类,我们熟悉的脚本语言有C shell脚本(bash、csh、ksh等)、JavaScript、Perl、PHP、Python、Ruby、VBScript等等。
回到正则表达式的问题,我并不打算在这里大谈正则表达式的用法,有两个原因:一是完全超出能力范围,二还是完全超出能力范围。。。
这里我只像谈一谈我对正则表达式的切身感受,以期给想学正则表达式的人一些先验知识。
正则表达式(简称regex,正则)对于用户来说最直接的印象是一串奇怪的字符串,说他奇怪是因为他有自己的语法或者说规则吧。其实要实现强大的文本匹配功能,光有规则肯定是不行的,这时候就要有实现,我们可以形象地称之为正则引擎,也就是各种支持正则表达式的语言或工具对其提供的支持。
学习正则表达式,熟悉其语法规则是基本,如果能够了解正则引擎的工作原理你就能将你的正则使用能力升华到神一般的境界。当然这里只是针对支持正则表达式的某一种语言或工具而言,如果你要是熟悉了好几种语言或工具的正则表达式的用法,你就真的是大牛了。
最后说一点,还是多看看书吧,Jeffrey的《精通正则表达式》就很不错。