MariaDB 正则表达式怎么用?

文章导读
Previous Quiz Next 除了 LIKE 子句提供的模式匹配之外,MariaDB 通过 REGEXP 操作符提供基于正则表达式的匹配。该操作符根据给定的模式对字符串表达式执行模式匹配。
A A

MariaDB - 正则表达式



Previous
Quiz
Next

除了 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 是不区分大小写的,除了二进制字符串。

以下是可以使用的可能模式表:

Sr.No Pattern & Description
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]';