MariaDB - 正则表达式

  • 简述

    除了 LIKE 子句提供的模式匹配之外,MariaDB 通过 REGEXP 运算符提供基于正则表达式的匹配。运算符根据给定的模式对字符串表达式执行模式匹配。
    MariaDB 10.0.5 引入了 PCRE 正则表达式,它极大地增加了匹配范围,如递归模式、前瞻断言等。
    查看下面给出的标准 REGEXP 运算符语法的使用 -
    
       SELECT column FROM table_name WHERE column REGEXP '[PATTERN]';
       
    REGEXP 为模式匹配返回 1,如果不匹配则返回 0。
    相反的选项以 NOT REGEXP 的形式存在。MariaDB 还提供 REGEXP 和 NOT REGEXP、RLIKE 和 NOT RLIKE 的同义词,它们是出于兼容性原因而创建的。
    比较的模式可以是文字字符串或其他内容,例如表格列。在字符串中,它使用 C 转义语法,因此将任何“\”字符加倍。REGEXP 也是不区分大小写的,但二进制字符串除外。
    下面给出了可以使用的可能模式表 -
    序号 图案和描述
    1
    ^
    它匹配字符串的开头。
    2
    $
    它匹配字符串的结尾。
    3
    .
    它匹配单个字符。
    4
    [...]
    它匹配括号中的任何字符。
    5
    [^...]
    它匹配括号中未列出的任何字符。
    6
    p1|p2|p3
    它匹配任何模式。
    7
    *
    它匹配前一个元素的 0 个或多个实例。
    8
    +
    它匹配前一个元素的 1 个或多个实例。
    9
    {n}
    它匹配前面元素的 n 个实例。
    10
    {m,n}
    它匹配前面元素的 m 到 n 个实例。
    查看下面给出的模式匹配示例 -
    以“pr”开头的产品 -
    
       SELECT name FROM product_tbl WHERE name REGEXP '^pr';
       
    以“na”结尾的产品 -
    
       SELECT name FROM product_tbl WHERE name REGEXP "na$";
       
    以元音开头的产品 -
    
       SELECT name FROM product_tbl WHERE name REGEXP '^[aeiou]';