本章节将介绍怎样使用正则表达式匹配单词边界,以及匹配非单词边界。
有关单词是由什么组成的这个命令,初看起来似乎很明显。但是,如果你被人问起下面这些行的字符序列中哪一个是单词,你会怎么回答呢?
cat shet jar pomee coloor
你觉得这里面有几个单词?可能 car 和 jar 在你的选择范围内。其他的都不是单词,这是因为你会英文,所以选择了正确的英文单词。
很明显,要想让一个文字处理程序知道这些词哪个属于英语单词是不现实的,除了英语单词,还有其他语种的单词。因而,就需要另外一种技术——更加机械的技术—--识别词的边界。
可以用两个位置来定义词边界:一个是构成一个单词的字符序列的开始位置,另一个是构成一个单词的字符序列的结束位置。
根据所使用的工具或语言不同,有一些元字符可以用于匹配位于词的开始位置的词边界,或者匹配词的结束位置的词边界,或者匹配前面两种词边界。
\<元字符用于识别位于一个词开始位置的词边界。它的前面是一个非字母字符(比如,一个空格符)或者是一行的开始位置。
实例:使用 “\<t” 正则表达式匹配字符 “t”,且位于单词开始边界。如下图:
工作原理
第三行中,to 和 trust 单词中的 t 位于空格符(一个非字母字符)之后,所以匹配成功
第四行中,that 单词中的 t 位于空格符(一个非字母字符)之后,所以匹配成功
第五行中,两个 to 单词中的 t 位于空格符(一个非字母字符)之后,所以匹配成功
第六行、第七行中的也是类似,都是位于空格符(一个非字母字符)之后,所以匹配成功
\>元字符表示位于一个字母字符序列结尾处的词边界。换句话说,它匹配词结尾处的词边界。
实例:使用 “t\>” 正则表达式匹配字符 “t”,且位于单词结束边界。如下图:
\b元字符既可以用于匹配位于词开始处的词边界也可以用于匹配词结尾处的词边界,通过下面的试验可以验证这个元字符的作用。
实例:使用 “\bt” 正则表达式匹配字符 “t”,且位于单词开始边界。如下图:
工作原理
模式 \bt 与 \<t 是等效的。它的含义是一个单词开始边界后跟一个小写的 t。从理论上讲,\bt 与 \<t 的含义是不一样的,因为 \<t 的意思如下:
匹配词开始处的词边界,并且后跟一个小写的 t。
而 \bt 的意思则是:
匹配一个词开始处或结尾处的词边界,并且后跟一个小写的 t。
\B 元字符的含义与 \b 元字符相反。\B 元字符匹配一个非词边界的位置。如下图: