一、单词边界
在实际中,我们有时需要查找特定的单词,而不想把包含在其它单词中的部分匹配出来,例如:
这里假如我们要把句子中的a全部替换为an,进行匹配时,其他单词中的字母a也会进行匹配,因此我们需要用限定符\b指定单词边界。
这里我们看到它只对单个单词a进行了匹配。
提示:\b匹配的位置位于一个能够构成单词的字符(\w)和一个不能用来构成单词的字符之间。如果要表明不匹配一个单词边界,则用\B。
下面再举一个简单的例子:
所写的文本中,第一个“ - ”两边没有空格,第二个两边都加了空格。
二、字符串边界
用来定义字符串边界的元字符有两个:一个定义字符串的开头^, 另一个定义字符串的结尾$。例子如下:
注意:^出现在[和]之间时,代表求非,且必须紧跟[的后面时才能起到作用。
三、分行匹配模式(multiline mode)
分行匹配模式使得正则表达式引擎把行分隔符当作一个字符串分隔符来对待,也就是将文本视为多个字符串。在分行模式下,^不仅匹配正常的字符串开头,还将匹配行分隔符(换行符)后面的开始位置,$不仅匹配正常的字符串结尾,还将匹配行分隔符(换行符)后面的结束位置。
使用时,(?m)必须出现在整个模式的最前面。例子如下:
警告:有一些正则表达式实现不支持(?m)。