第10章 正则表达式

10.1 正则表达式基础

10.1.1 什么是正则表达式

在老套机械地使用一段抽象难懂的文字来解释“什么是正则表达式”之前,让我们回忆一下自己是如何使用Office软件中的“查找”功能的。该功能似乎很简单,比如说,想要在当前文档中找到hello,只需要在查找选项中输入hello就可以了,如图10-1所示。可能大家没有意识到,其实这就是一种形式最简单的“表达式”,查找工具会使用某种匹配方式进行全文搜索,其工作的原理也非常简单,那就是先找到h,然后看后面是不是e,再看后面是不是l,以此类推。如果全部符合,那就是匹配到了。但这里可能也会出现一个问题,这种简单的查找其实也能匹配到helloworld(注意中间没有空格)这样的文字,不过Office的查找中还提供了高级功能,选中“全字匹配”就只会匹配hello了。再让我们想想数学中的方程组,它们实际上是一种表明变量关系的“表达式”,我们可以根据该表达式求出变量x、y的值,x和y可能是唯一匹配,也可能有多个匹配。

在Linux文本模式中,没有类似于Office的图形化匹配工具,但可以使用“正则表达式”来做相同的匹配工作。还是以精确匹配hello为例,在正则表达式中就可以用\<hello\>来表示,这里使用到了正则表达式的特殊符号。正则表达式中还有更多更复杂的符号可用来代表其他有意义的字符,这实际上是一种抽象的过程。提到抽象,在现实生活中我们可以用“由内燃机驱动的、有轮子的工具”来代表所有的机动车,但是计算机并不懂这些自然语言,那么用什么来代表诸如手机号、IP地址、一个网址等有一定格式和特征的字符串呢?答案就是使用正则表达式。

说到这里,再解释什么是正则表达式就显得简单明了了:正则表达式就是能用某种模式去匹配一类字符串的公式,它是由一串字符和元字符构成的字符串。所谓元字符,就是用以阐述字符表达式的内容、转换和描述各种操作信息的字符。

第10章 正则表达式 - 图1

图10-1 在Office中查找文本