查询中的正则
格式
select * from 表名 where 字段名 REGEXP '正则表达式';
字符功能
命令 | 说明 |
---|---|
. | 匹配任意字符(包括回车和新行) |
a|b | 匹配a或b |
[abc] | 匹配a,b,c任意一个字符 |
[m-n] | 匹配m到n之间的任意单个字符,例如[0-9],[a-z],[A-Z] |
\\特殊字符 | 匹配含此特殊字符的数据,\\表示转义 |
* | 0个或多个匹配 |
+ | 1个或多个匹配,即{1,} |
? | 0个或1个匹配,即{0,1} |
{n} | 指定数目的匹配 |
{n,} | 不少于指定数目的匹配 |
{,n} | 匹配0到n个 |
{n,m} | 匹配数目的范围(m不超过255) |
^ | 文本的开始 |
[^...] | 不匹配里面的任意单个字符 |
$ | 文本的末尾 |
[[:<:]] | 词的开始 |
[[:>:]] | 词的结尾 |
(...) | 将内部的字符组成一个整体 |
select 'AABC123abc' REGEXP '[a-z]'; #返回1
select 'AABC123abc' REGEXP '[4-6]'; #返回0
select 'AABC123abc' REGEXP 'C|D'; #返回1
select 'AABC123abc' REGEXP '[Ed3]'; #返回1
select 'AABC123abc' REGEXP '(AD*BC)'; #返回1
select 'AABC123abc' REGEXP '(AD+BC)'; #返回0
select 'AABC123abc' REGEXP '(AD?BC)'; #返回1
select 'AABC123abc' REGEXP '^(A{2}BC)'; #返回1
select 'AABC123abc' REGEXP 'A{2,100}'; #返回1
select 'AABC123abc' REGEXP 'b$'; #返回0
select 'alike alike' REGEXP '[[:<:]](li)'; #返回0
除了以上字符,还内置了一些字符类,也可直接用于正则表达式
类 | 说明 |
---|---|
[:alnum:] | 任意字母与数字(同[a-zA-Z0-9]) |
[:alpha:] | 任意字符(同[a-zA-Z]) |
[:blank:] | 空格和制表(同[\\t]) |
[:cntrl:] | ASCII控制字符(ASCII 0到31和127) |
[:digit:] | 任意数字(同[0-9]) |
[:print:] | 任意可打印字符 |
[:graph:] | 与[:print:]相同,但不包括空格 |
[:lower:] | 任意小写字母(同[a-z]) |
[:upper:] | 任意大写字母(同[A-Z]) |
[:punct:] | 既不在[:alnum:]又不在[:cntrl:]中的任意字符 |
[:space:] | 包括空格在内的任意空白字符(同[\\f\\n\\r\\t\\v]) |
[:xdigit:] | 任意十六进制数字(同[a-fA-F0-9]) |
select 'AABC123Aabc' REGEXP '[[:alum:]]{11}'; #返回1
select 'AABC123Aabc' REGEXP '[[:alum:]]{12}'; #返回0
select 'AABC123Aabc' REGEXP '[[:alpha:]]{4}'; #返回1
select 'AABC123Aabc' REGEXP '[[:alpha:]]{5}'; #返回0,说明必须是连续的字符