標準SQL匹配和正規表示式匹配

2021-08-19 21:28:10 字數 2281 閱讀 8690

mysql中的模式匹配分為兩種:

一種是標準sql匹配,另一種是 正規表示式匹配

標準sql匹配,我們通常用的最多的一種方式

a:使用like和not like比較操作符(注意不能使用=或!=); 

b:模式預設是忽略大小寫的; 

c:允許使用」_」匹配任何單個字元,」%」匹配任意數目字元(包括零字元); 

正規表示式匹配。用的極少,極其影響效能

a:使用regexp和not regexp操作符

b:標準sql匹配即like,使用的是完全匹配,regexp使用的是部分匹配。

所謂完全匹配就是只有被匹配字元完全和所定義的模式匹配,才匹配成功,而部分匹配是只要被匹配字元包含或者可以等於所定義的模式,就匹 配成功。

正規表示式匹配示例

^ 所匹配的字串以後面的字串開頭 

mysql> select "fonfo" regexp "^fo$"; -> 0(表示不匹配) 

mysql> select "fofo" regexp "^fo"; -> 1(表示匹配) 

$ 所匹配的字串以前面的字串結尾 

mysql> select "fono" regexp "^fono$"; -> 1(表示匹配) 

mysql> select "fono" regexp "^fo$"; -> 0(表示不匹配) 

. 匹配任何字元(包括新行) 

mysql> select "fofo" regexp "^f.*"; -> 1(表示匹配) 

mysql> select "fonfo" regexp "^f.*"; -> 1(表示匹配) 

a* 匹配任意多個a(包括空串) 

mysql> select "ban" regexp "^ba*n"; -> 1(表示匹配) 

mysql> select "baaan" regexp "^ba*n"; -> 1(表示匹配) 

mysql> select "bn" regexp "^ba*n"; -> 1(表示匹配) 

a+ 匹配1個或多個a字元的任何序列。 

mysql> select "ban" regexp "^ba+n"; -> 1(表示匹配) 

mysql> select "bn" regexp "^ba+n"; -> 0(表示不匹配) 

a? 匹配乙個或零個a 

mysql> select "bn" regexp "^ba?n"; -> 1(表示匹配) 

mysql> select "ban" regexp "^ba?n"; -> 1(表示匹配) 

mysql> select "baan" regexp "^ba?n"; -> 0(表示不匹配) 

de|abc 匹配de或abc 

mysql> select "pi" regexp "pi|apa"; -> 1(表示匹配) 

mysql> select "axe" regexp "pi|apa"; -> 0(表示不匹配) 

mysql> select "apa" regexp "pi|apa"; -> 1(表示匹配) 

mysql> select "apa" regexp "^(pi|apa)$"; -> 1(表示匹配) 

mysql> select "pi" regexp "^(pi|apa)$"; -> 1(表示匹配) 

mysql> select "pix" regexp "^(pi|apa)$"; -> 0(表示不匹配) 

(abc)* 匹配任意多個abc(包括空串) 

mysql> select "pi" regexp "^(pi)*$"; -> 1(表示匹配) 

mysql> select "pip" regexp "^(pi)*$"; -> 0(表示不匹配) 

mysql> select "pipi" regexp "^(pi)*$"; -> 1(表示匹配) 

這是乙個更全面的方法,它可以實現前面好幾種保留字的功能 

a* 可以寫成a 

a 可以寫成a 

a? 可以寫成a 

在{}內只有乙個整型引數i,表示字元只能出現i次;在{}內有乙個整型引數i, 後面跟乙個「,」,表示字元可以出現i次或i次以上;在{}內只有乙個整型引數i, 後面跟乙個「,」,再跟乙個整型引數j,表示字元只能出現i次以上,j次以下(包括i次和j次)。其中的整型引數必須大於等於0,小於等於 re_dup_max(預設是255)。 如果同時給定了m和n,m必須小於或等於n.

注意  匹配特殊字元

\\  為前導。即轉義.正規表示式內具有特殊意義的所有字元都必須以這種方式轉義。

\\-  表示查詢 -

\\.  表示查詢 .

正規表示式 匹配

字串 void abtr quint32 ab 表示乙個正規表示式 template class bidirectionaliterator class allocator std allocator sub match bidirectionaliterator class match resul...

正規表示式匹配

請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 解法 首先要想到用遞迴處理...

正規表示式匹配

請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 class solutio...