查詢中的正則
格式
select * from 表名 where 字段名 REGEXP '正則表達(dá)式';
字符功能
| 命令 | 說明 |
|---|---|
| . | 匹配任意字符(包括回車和新行) |
| a|b | 匹配a或b |
| [abc] | 匹配a,b,c任意一個字符 |
| [m-n] | 匹配m到n之間的任意單個字符,例如[0-9],[a-z],[A-Z] |
| \\特殊字符 | 匹配含此特殊字符的數(shù)據(jù),\\表示轉(zhuǎn)義 |
| * | 0個或多個匹配 |
| + | 1個或多個匹配,即{1,} |
| ? | 0個或1個匹配,即{0,1} |
| {n} | 指定數(shù)目的匹配 |
| {n,} | 不少于指定數(shù)目的匹配 |
| {,n} | 匹配0到n個 |
| {n,m} | 匹配數(shù)目的范圍(m不超過255) |
| ^ | 文本的開始 |
| [^...] | 不匹配里面的任意單個字符 |
| $ | 文本的末尾 |
| [[:<:]] | 詞的開始 |
| [[:>:]] | 詞的結(jié)尾 |
| (...) | 將內(nèi)部的字符組成一個整體 |
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
除了以上字符,還內(nèi)置了一些字符類,也可直接用于正則表達(dá)式
| 類 | 說明 |
|---|---|
| [:alnum:] | 任意字母與數(shù)字(同[a-zA-Z0-9]) |
| [:alpha:] | 任意字符(同[a-zA-Z]) |
| [:blank:] | 空格和制表(同[\\t]) |
| [:cntrl:] | ASCII控制字符(ASCII 0到31和127) |
| [:digit:] | 任意數(shù)字(同[0-9]) |
| [:print:] | 任意可打印字符 |
| [:graph:] | 與[:print:]相同,但不包括空格 |
| [:lower:] | 任意小寫字母(同[a-z]) |
| [:upper:] | 任意大寫字母(同[A-Z]) |
| [:punct:] | 既不在[:alnum:]又不在[:cntrl:]中的任意字符 |
| [:space:] | 包括空格在內(nèi)的任意空白字符(同[\\f\\n\\r\\t\\v]) |
| [:xdigit:] | 任意十六進(jìn)制數(shù)字(同[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,說明必須是連續(xù)的字符