请稍候,加载中....

MySQL正则表达式

MySQL正则模式

MySQL除了通过 LIKE ...% 来进行模糊匹配还可以借助正则来匹配。

MySQL中使用 REGEXP 操作符来进行正则表达式匹配。

下表中的正则模式可应用于 REGEXP 操作符中。

模式 描述
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。
. 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用像 '[.\n]' 的模式。
[...] 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[^...] 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
p1|p2|p3 匹配 p1 或 p2 或 p3。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

 


正则匹配示例

数据表示例

+----+--------------------+--------+---------------------+--------+
| id | title              | author | pub_date            | a_type |
+----+--------------------+--------+---------------------+--------+
|  1 | hadoop简介         | 大猿   | 2003-01-05 11:23:00 |   NULL |
|  2 | python元类         | 小猿   | 2003-01-11 13:00:01 |   NULL |
|  3 | HTML基础           | 猿大头 | 2004-03-09 12:00:00 |   NULL |
|  4 | Javascript         | 猿媛   | 2005-11-03 17:34:12 |   NULL |
|  5 | ETL快速入门        | 猿媛   | 2005-11-07 18:40:00 |   NULL |
|  6 | 异步编程           | 大猿   | 2005-11-07 18:45:00 |   NULL |
|  7 | 快速搭建自己的web  | 大猿   | 2021-01-03 00:00:00 |   NULL |
|  8 | 一分钟搞定人脸识别 | 小猿   | 2021-01-03 00:00:00 |   NULL |
| 10 | 快速搭建自己的web  | 大猿   | 2022-04-25 18:35:49 |   NULL |
+----+--------------------+--------+---------------------+--------+

查找title字段中以字母为开头的所有数据

mysql> SELECT * FROM articles WHERE title REGEXP '^[a-zA-Z]';
+----+-------------+--------+---------------------+--------+
| id | title       | author | pub_date            | a_type |
+----+-------------+--------+---------------------+--------+
|  1 | hadoop简介  | 大猿   | 2003-01-05 11:23:00 |   NULL |
|  2 | python元类  | 小猿   | 2003-01-11 13:00:01 |   NULL |
|  3 | HTML基础    | 猿大头 | 2004-03-09 12:00:00 |   NULL |
|  4 | Javascript  | 猿媛   | 2005-11-03 17:34:12 |   NULL |
|  5 | ETL快速入门 | 猿媛   | 2005-11-07 18:40:00 |   NULL |
+----+-------------+--------+---------------------+--------+

查找title字段中以字母为结尾的所有数据

mysql> SELECT * FROM articles WHERE title REGEXP '[a-zA-Z]$';
+----+-------------------+--------+---------------------+--------+
| id | title             | author | pub_date            | a_type |
+----+-------------------+--------+---------------------+--------+
|  4 | Javascript        | 猿媛   | 2005-11-03 17:34:12 |   NULL |
|  7 | 快速搭建自己的web | 大猿   | 2021-01-03 00:00:00 |   NULL |
| 10 | 快速搭建自己的web | 大猿   | 2022-04-25 18:35:49 |   NULL |
+----+-------------------+--------+---------------------+--------+

查找title字段中包含'Python'或者'Java'字符串的所有数据:

mysql> SELECT * FROM articles WHERE title REGEXP 'Python|Java';
+----+------------+--------+---------------------+--------+
| id | title      | author | pub_date            | a_type |
+----+------------+--------+---------------------+--------+
|  2 | python元类 | 小猿   | 2003-01-11 13:00:01 |   NULL |
|  4 | Javascript | 猿媛   | 2005-11-03 17:34:12 |   NULL |
+----+------------+--------+---------------------+--------+

Python学习手册-