1、REGEXP ‘匹配方式’
2、常用匹配方式
| 模式字符 | 含义 | 
| ^ | 匹配字符开始的部分 | 
| $ | 匹配字符串结尾的部分 | 
| . | 代表字符串中的任意一个字符,包括回车换行 | 
| [字符合集] | 匹配字符合集中的任何一个字符 | 
| [^字符合集] | 匹配除了字符合集以外的任何一个字符 | 
| S1 | S2 | S3 | 匹配S1、S2、S3中的任意一个字符串 | 
| * | 代表0个1个或多个其前的字符 | 
| + | 代表1个或多个其前的字符 | 
| String{N} | 字符串出现N次 | 
| 字符串{M,N} | 字符串至少出现M次,最多N次 | 
1、^匹配字符开始的部分
以用户表为例,匹配用户名以t开始的用户:
| 12
 3
 4
 5
 6
 7
 8
 
 | mysql> SELECT * FROM cms_user WHERE username REGEXP '^t';+
 | id | username | password | email       | regTime    | face     | proId | age  | sex    |
 +
 | 12 | test1    | test1    | user@qq.com | 1419811708 | user.jpg |     1 | NULL | 保密   |
 | 13 | TEST2    | TEST2    | user@qq.com | 1381203974 | user.jpg |    20 |   18 | NULL   |
 +
 2 rows in set (0.00 sec)
 
 | 
2、$匹配字符结尾的部分
以用户表为例,匹配用户名以g结尾的用户:
| 12
 3
 4
 5
 6
 7
 8
 9
 
 | mysql> SELECT * FROM cms_user WHERE username REGEXP 'g$';+
 | id | username | password | email       | regTime    | face     | proId | age  | sex  |
 +
 |  4 | long     | long     | user@qq.com | 1419814708 | user.jpg |     4 |   44 | 女   |
 |  5 | ring     | ring     | user@qq.com | 1419815708 | user.jpg |     2 |   25 | 男   |
 |  7 | sing     | sing     | user@qq.com | 1419817708 | user.jpg |     5 |   56 | 男   |
 +
 3 rows in set (0.00 sec)
 
 | 
3、.代表任意字符
比如查询用户名中出现rg且中间有两个任意字符:
| 12
 3
 4
 5
 6
 7
 
 | mysql> SELECT * FROM cms_user WHERE username REGEXP 'r..g';+
 | id | username | password | email       | regTime    | face     | proId | age  | sex  |
 +
 |  5 | ring     | ring     | user@qq.com | 1419815708 | user.jpg |     2 |   25 | 男   |
 +
 1 row in set (0.00 sec)
 
 | 
该命令等价于:
| 1
 | SELECT * FROM cms_user WHERE username LIKE 'r__g';
 | 
4、[字符合集],匹配字符合集中的任何一个字符
例如匹配用户名中包含[lt]的的用户:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | mysql> SELECT * FROM cms_user WHERE username REGEXP '[lt]';+
 | id | username | password | email       | regTime    | face     | proId | age  | sex    |
 +
 |  4 | long     | long     | user@qq.com | 1419814708 | user.jpg |     4 |   44 | 女     |
 |  8 | blek     | blek     | user@qq.com | 1419818708 | user.jpg |     1 |   88 | 女     |
 | 10 | lily     | lily     | user@qq.com | 1419831708 | user.jpg |     2 |   32 | 女     |
 | 12 | test1    | test1    | user@qq.com | 1419811708 | user.jpg |     1 | NULL | 保密   |
 | 13 | TEST2    | TEST2    | user@qq.com | 1381203974 | user.jpg |    20 |   18 | NULL   |
 +
 5 rows in set (0.00 sec)
 
 | 
也可以指定集合,比如出现过a-f的:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | mysql> SELECT * FROM cms_user WHERE username REGEXP '[a-f]';+
 | id | username | password | email       | regTime    | face     | proId | age  | sex    |
 +
 |  6 | queen    | queen    | user@qq.com | 1419861708 | user.jpg |     3 |   77 | 女     |
 |  8 | blek     | blek     | user@qq.com | 1419818708 | user.jpg |     1 |   88 | 女     |
 |  9 | rose     | rose     | user@qq.com | 1419821708 | user.jpg |     2 |   12 | 男     |
 | 12 | test1    | test1    | user@qq.com | 1419811708 | user.jpg |     1 | NULL | 保密   |
 | 13 | TEST2    | TEST2    | user@qq.com | 1381203974 | user.jpg |    20 |   18 | NULL   |
 +
 5 rows in set (0.01 sec)
 
 | 
5、[^字符合集],匹配除了字符合集以外的任何一个字符
例如匹配用户名中除了[long]的的用户(如果用户名叫longe也会显示出来):
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 
 | mysql> SELECT * FROM cms_user WHERE username REGEXP '[^long]';+
 | id | username  | password     | email       | regTime    | face     | proId | age  | sex    |
 +
 |  1 | 张三      | zhangsan     | user@qq.com | 1419811708 | user.jpg |     1 |   11 | 男     |
 |  2 | 张三丰    | zhangsanfeng | user@qq.com | 1419812708 | user.jpg |     2 |   21 | 女     |
 |  3 | 章子怡    | zhangsan     | user@qq.com | 1419813708 | user.jpg |     3 |   33 | 男     |
 |  5 | ring      | ring         | user@qq.com | 1419815708 | user.jpg |     2 |   25 | 男     |
 |  6 | queen     | queen        | user@qq.com | 1419861708 | user.jpg |     3 |   77 | 女     |
 |  7 | sing      | sing         | user@qq.com | 1419817708 | user.jpg |     5 |   56 | 男     |
 |  8 | blek      | blek         | user@qq.com | 1419818708 | user.jpg |     1 |   88 | 女     |
 |  9 | rose      | rose         | user@qq.com | 1419821708 | user.jpg |     2 |   12 | 男     |
 | 10 | lily      | lily         | user@qq.com | 1419831708 | user.jpg |     2 |   32 | 女     |
 | 11 | john      | john         | user@qq.com | 1419841708 | user.jpg |     2 |   65 | 保密   |
 | 12 | test1     | test1        | user@qq.com | 1419811708 | user.jpg |     1 | NULL | 保密   |
 | 13 | TEST2     | TEST2        | user@qq.com | 1381203974 | user.jpg |    20 |   18 | NULL   |
 +
 12 rows in set (0.01 sec)
 
 | 
同理也可以指定集合不在a-k的:
| 1
 | SELECT * FROM cms_user WHERE username REGEXP '[^a-k]';
 | 
6、S1 | S2 | S3,匹配S1、S2、S3中的任意一个字符串
例如匹配ng|qu的:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 
 | mysql> SELECT * FROM cms_user WHERE username REGEXP 'ng|qu';+
 | id | username | password | email       | regTime    | face     | proId | age  | sex  |
 +
 |  4 | long     | long     | user@qq.com | 1419814708 | user.jpg |     4 |   44 | 女   |
 |  5 | ring     | ring     | user@qq.com | 1419815708 | user.jpg |     2 |   25 | 男   |
 |  6 | queen    | queen    | user@qq.com | 1419861708 | user.jpg |     3 |   77 | 女   |
 |  7 | sing     | sing     | user@qq.com | 1419817708 | user.jpg |     5 |   56 | 男   |
 +
 4 rows in set (0.00 sec)
 
 | 
7、*,代表0个1个或多个其前的字符
比例出现qu的:
| 12
 3
 4
 5
 6
 7
 
 | mysql> SELECT * FROM cms_user WHERE username REGEXP 'qu*';+
 | id | username | password | email       | regTime    | face     | proId | age  | sex  |
 +
 |  6 | queen    | queen    | user@qq.com | 1419861708 | user.jpg |     3 |   77 | 女   |
 +
 1 row in set (0.00 sec)
 
 | 
8、+,代表1个或多个其前的字符
比如t+一定出现t:
| 12
 3
 4
 5
 6
 7
 8
 
 | mysql> SELECT * FROM cms_user WHERE username REGEXP 't+';+
 | id | username | password | email       | regTime    | face     | proId | age  | sex    |
 +
 | 12 | test1    | test1    | user@qq.com | 1419811708 | user.jpg |     1 | NULL | 保密   |
 | 13 | TEST2    | TEST2    | user@qq.com | 1381203974 | user.jpg |    20 |   18 | NULL   |
 +
 2 rows in set (0.00 sec)
 
 | 
9、String{N},字符串出现N次
比如que出现2次:
| 12
 3
 4
 5
 6
 7
 
 | mysql> SELECT * FROM cms_user WHERE username REGEXP 'que{2}';+
 | id | username | password | email       | regTime    | face     | proId | age  | sex  |
 +
 |  6 | queen    | queen    | user@qq.com | 1419861708 | user.jpg |     3 |   77 | 女   |
 +
 1 row in set (0.00 sec)
 
 | 
10、字符串{M,N},字符串至少出现M次,最多N次
比如que最多出现3次最少出现一次:
| 12
 3
 4
 5
 6
 7
 
 | mysql> SELECT * FROM cms_user WHERE username REGEXP 'que{1,3}';+
 | id | username | password | email       | regTime    | face     | proId | age  | sex  |
 +
 |  6 | queen    | queen    | user@qq.com | 1419861708 | user.jpg |     3 |   77 | 女   |
 +
 1 row in set (0.00 sec)
 
 |