
上QQ阅读APP看书,第一时间看更新
9.2.5 匹配特殊字符
正则表达式语言由具有特殊含义的特殊字符组成。你已经见过“.”、“[]”、“|”和“-”,还有一些其他的。这里抛出一个问题,如果你需要匹配这些字符,怎么办呢?例如,如果你想要找到包含“.”字符的值,你如何搜索?看下面的例子:
▼ 输入

▼ 输出

▼ 分析
上面的例子没有解决问题。“.”匹配任何字符,因此每行都被返回。为了匹配特殊字符,它们必须跟上前缀“\\”。因此,“\\-”的意思是寻找“-”,而“\\.”的意思是寻找“.”。
▼ 输入

▼ 输出

▼ 分析
这样就可以了。“\\.”匹配“.”,因此只返回了一行。这个过程被称为“转义”,并且所有正则表达式中,具有特殊含义的字符都需要这样转义。这些转义字符包含“.”、“|”、“[]”和其他到目前为止使用过的特殊字符。
“\\”也用于元字符(具有特殊含义的字符),如表9.1所示。
表9.1 空白元字符
提示
匹配“\” 为了匹配反斜杠字符本身(\),需要使用“\\\”。
注意
使用“\”还是“\\” 许多正则表达式用一个反斜杠实现特殊字符转义。MariaDB却使用两个反斜杠(MariaDB本身解释一个,正则表达式库解释另一个)。