正則表達式功能確實很強大,那天專門抽空學學,這里就暫時在mysql查詢中用用。
正則表達式強大而靈活,可以應用於非常復雜的查詢。
選項 | 說明(自動加匹配二字) | 例子 | 匹配值示例 |
^ | 文本開始字符 | '^b'匹配以字母b開頭的字符串 | book, big, banana, bike |
$ | 文本結束字符 | 'st$'匹配以st結尾的字符串 | test, resist, persist |
. | 任何單個字符 | 'b.t'匹配任何b和t之間有一個字符 | bit, bat, but, bite |
* | 0個或多個在它前面的字符 | 'f*n'匹配字符n前面有任意n個字符f | fn, fan, faan, abcn |
+ | 前面的字符一次或多次 | 'ba+'匹配以b開頭后面緊跟至少一個a | ba, bay, bare, battle |
<字符串> | 包含指定字符串的文本 | 'fa' | fan, afa, faad |
[字符集合] | 字符集合中的任一個字符 | '[xz]'匹配x或者z | dizzy, zebra, x-ray, extra |
[^] | 不在括號中的任何字符 | '[^abc]'匹配任何不包含a、b或c的字符串 | desk, fox, f8ke |
字符串{n} | 前面的字符串至少n次 | b{2}匹配2個或更多的b | bbb, bbbb, bbbbbb |
字符串{n,m} | 前面的字符串至少n次,至多m次 | b{2,4}匹配最少2個,最多4個b | bb, bbb, bbbb |
where 字段名 REGEXP 模式;
---恢復內容開始---
基本形式
屬性名 regexp ‘匹配方式'
正則表達式的模式字符
^ 匹配字符開始的部分
eg1: 從info表name字段中查詢以L開頭的記錄
select * from info where name regexp '^L';
eg2: 從info表name字段中查詢以aaa開頭的記錄
select * from info where name regexp '^aaa';
$ 匹配字符結束的部分
eg1: 從info表name字段中查詢以c結尾的記錄
select * from info where name regexp 'c$';
eg2: 從info表name字段中查詢以aaa結尾的記錄
select * from info where name regexp 'aaa$';
. 匹配字符串中的任意一個字符,包括回車和換行
eg1: 從info表name字段中查詢以L開頭y結尾中間有兩個任意字符的記錄
select * from info where name regexp '^L..y$';
[字符集合]匹配字符集合中的任意字符
eg1: 從info表name字段中查詢包含c、e、o三個字母中任意一個的記錄
select * from info where name regexp '[ceo]';
eg2: 從info表name字段中查詢包含數字的記錄
select * from info where name regexp '[0-9]';
eg3: 從info表name字段中查詢包含數字或a、b、c三個字母中任意一個的記錄
select * from info where name regexp '[0-9a-c]';
[^字符集合]匹配除了字符集合外的任意字符
eg1: 從info表name字段中查詢包含a-w字母和數字以外字符的記錄
select * from info where name regexp '[^a-w0-9]';
s1|s2|s3 匹配s1s2s3中的任意一個
eg1: 從info表name字段中查詢包含'ic'的記錄
select * from info where name regexp 'ic';
eg2: 從info表name字段中查詢包含ic、uc、ab三個字符串中任意一個的記錄
select * from info where name regexp 'ic|uc|ab';
* 代表多個該字符前的字符,包括0個或1個
eg1: 從info表name字段中查詢c之前出現過a的記錄
select * from info where name regexp 'a*c';
+ 代表多個該字符前的字符,包括1個
eg1: 從info表name字段中查詢c之前出現過a的記錄
select * from info where name regexp 'a+c';(注意比較結果!)
字符串{N} 字符串出現N次
eg1: 從info表name字段中查詢出現過a3次的記錄
select * from info where name regexp 'a{3}';
字符串{M,N}字符串最少出現M次,最多出現N次
eg1: 從info表name字段中查詢ab出現最少1次最多3次的記錄
select * from info where name regexp 'ab{1,3}';
MYSQL中自帶通配符(LIKE關鍵詞)
%可以表示任意長度的字符(包括0)
-可以表示單個字符
---恢復內容結束---