标签:
所谓正在表达式,就是通过模式去匹配一类字符串。MySQL支持的模式字符如下表所示:
模式字符 | 含义 |
^ | 匹配字符串的开始部分 |
$ | 匹配字符串的结束部分 |
. | 匹配字符串中的任意一个字符 |
[字符集合] | 匹配字符集合中的任意一个字符 |
[^字符集合] | 匹配字符集合外的任意一个字符 |
str1|str2|str3 | 匹配str1,sr2和str3中的任意一个字符串 |
* | 匹配字符,包含0个和1个 |
+ | 匹配字符,包含1个 |
字符串{N} | 字符串出现n次 |
字符串{m,n} | 字符串出现至少M次,最多N次 |
在模式匹配的时候,如果相符则返回1,否则返回0。
1. 执行带有"^"模式字符的SQL。
SELECT ‘cjgong‘ REGEXP ‘^c‘ 特定字符开头,‘cjgongcjgong‘ REGEXP ‘^cjgong‘ 特定字符串开头;
执行SQL,结果如下所示:
2. 执行带有"$"模式字符的SQL。
SELECT ‘cjgong‘ REGEXP ‘g$‘ 特定字符结尾,‘cjgongcjgong‘ REGEXP ‘cjgong$‘ 特定字符串结尾;
执行SQL,结果如下所示:
3. 执行带有"."模式字符的SQL。
SELECT ‘cjgong‘ REGEXP ‘^c....g$‘ 匹配4个任意字符
执行SQL,结果如下所示:
4. 执行带有"[]"和"[^]"模式字符的SQL。
SELECT ‘cjgong‘ REGEXP ‘[abc]‘ 指定字符串字符,‘cjgong‘ REGEXP ‘[a-zA-Z]‘ 指定字符串中的集合区间,
‘cjgong‘ REGEXP ‘[^abc]‘ 指定字符外字符,‘cjgong‘ REGEXP ‘[^a-zA-Z0-9]‘ 指定字符外集合区间;
执行SQL,结果如下所示:
5. 执行带有"*"和"+"模式字符的SQL。
SELECT ‘cjgong‘ REGEXP ‘a*g‘,‘cjgong‘ REGEXP ‘a+g‘;
通过模式字符"*"和"+"可以匹配字符g之前是否有多个字符a,不过前者表示0个或任意个字符,而后者至少表示一个字符,因此显示结果分别为1和0。
执行SQL,结果如下所示:
6. 执行带有"|"模式字符的SQL。
SELECT ‘cjgong‘ REGEXP ‘cjg‘ 指定单个字符,‘cjgong‘ REGEXP ‘cjc|cjgc‘ 指定多个字符;
执行SQL,结果如下所示:
7. 执行带有"{M}"和{M,N}模式字符的SQL。
SELECT ‘cccjgong‘ REGEXP ‘c{3}‘ 匹配3个c,‘cccjgongg‘ REGEXP ‘g{2}‘ 匹配2个g, ‘cgong‘ REGEXP ‘cj{1,2}‘ 至少1个最多2个,‘cjcjgong‘ REGEXP ‘cj{1,2}‘ 至少1个最多2个;
c{3}表示字符串c连续出现3次,cj{1,2}表示字符串cj至少出现一次最多连接出现3次。
执行SQL,结果如下所示:
正则表达式的功能非常强大,使用正则表达式可以灵活地设置字符串匹配的条件。
标签:
原文地址:http://www.cnblogs.com/longshiyVip/p/4641104.html