sql模式匹配
_ 下劃線匹配任何單個字元
% 匹配任意數碼字元
正規表示式的匹配
使用regexp和not regexp操作符
『.』匹配任何單個的字元。
字元類「[...]」匹配在方括號內的任何字元。例如,「[abc]」匹配「a」、「b」或「c」。為了命名字元的範圍,使用乙個「-」。「[a-z]」匹配任何字母,而「[0-9]」匹配任何數字。
「 * 」匹配零個或多個在它前面的字元。例如,「x*」匹配任何數量的「x」字元,「[0-9]*」匹配任何數量的數字,而「.*」匹配任何數量的任何字元。
為了找出以「b」開頭的名字,使用「^」匹配名字的開始:
mysql> select * from pet where name regexp '^b';
select * from `student` where `username` regexp '1$'
為了找出包含乙個「w」的名字,使用以下查詢:
mysql> select * from pet where name regexp 'w';
你也可以使用「」「重複n次」操作符重寫前面的查詢:
mysql> select * from pet where name regexp '^.$';
對於regexp操作符,正規表示式可以使用任何下述特殊字元和結構:
匹配字串的開始部分。
mysql>select 'fo\nfo' regexp '^fo$';-> 0
mysql>select 'fofo' regexp '^fo';-> 1匹配字串的結束部分。
mysql>select 'fo\no' regexp '^fo\no$';-> 1
mysql>select 'fo\no' regexp '^fo$';-> 0匹配任何字元(包括回車和新行)。
mysql>select 'fofo' regexp '^f.*$';-> 1
mysql>select 'fo\r\nfo' regexp '^f.*$';-> 1· a*
匹配0或多個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?
匹配0個或1個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的0個或多個例項。
mysql>select 'pi' regexp '^(pi)*$';-> 1
mysql>select 'pip' regexp '^(pi)*$';-> 0
mysql>select 'pipi' regexp '^(pi)*$';-> 1· ,
或符號提供了編寫正規表示式的更通用方式,能夠匹配模式的很多前述原子(或「部分」)。m和n均為整數。
o a*
可被寫入為a。
o a+
可被寫入為a。
o a?
可被寫入為a。
更準確地講,a與a的n個例項準確匹配。a匹配a的n個或更多例項。a匹配a的m~n個例項,包含m和n。
m和n必須位於0~re_dup_max(預設為255)的範圍內,包含0和re_dup_max。如果同時給定了m和n,m必須小於或等於n。
mysql>select 'abcde' regexp 'a[bcd]e';-> 0
mysql>select 'abcde' regexp 'a[bcd]e';-> 1
mysql>select 'abcde' regexp 'a[bcd]e';-> 1· [a-dx], [^a-dx]
匹配任何是(或不是,如果使用^的話)a、b、c、d或x的字元。兩個其他字元之間的「-」字元構成乙個範圍,與從第1個字元開始到第2個字元之間的所有字元匹配。例如,[0-9]匹配任何十進位制數字 。要想包含文字字元「]」,它必須緊跟在開括號「[」之後。要想包含文字字元「-」,它必須首先或最後寫入。對於對內未定義任何特殊含義的任何字元,僅與其本身匹配。
mysql>select 'axbc' regexp '[a-dxyz]';-> 1
mysql>select 'axbc' regexp '^[a-dxyz]$';-> 0
mysql>select 'axbc' regexp '^[a-dxyz]+$';-> 1
mysql>select 'axbc' regexp '^[^a-dxyz]+$';-> 0
mysql>select 'gheis' regexp '^[^a-dxyz]+$';-> 1
mysql>select 'gheisa' regexp '^[^a-dxyz]+$';-> 0· [.characters.]
在括號表示式中(使用[和]),匹配用於校對元素的字串行。字元為單個字元或諸如新行等字元名。在檔案regexp/cname.h中,可找到字元名稱的完整列表。
mysql>select '~' regexp '[[.~.]]';-> 1
mysql>select '~' regexp '[[.tilde.]]';-> 1· [=character_class=]
在括號表示式中(使用[和]),[=character_class=]表示等同類。它與具有相同校對值的所有字元匹配,包括它本身,例如,如果o和(+)均是等同類的成員,那麼[[=o=]]、[[=(+)=]]和[o(+)]是同義詞。等同類不得用作範圍的端點。
· [:character_class:]
在括號表示式中(使用[和]),[:character_class:]表示與術語類的所有字元匹配的字元類。標準的類名稱是:
alnum
文字數字字元
alpha
文字字元
blank
空白字元
cntrl
控制字元
digit
數字字元
graph
圖形字元
lower
小寫文字字元
圖形或空格字元
punct
標點字元
space
空格、製表符、新行、和回車
upper
大寫文字字元
xdigit
十六進製制數字字元
它們代表在ctype(3)手冊頁面中定義的字元類。特定地區可能會提供其他類名。字元類不得用作範圍的端點。
mysql>select 'justalnums' regexp '[[:alnum:]]+';-> 1
VB 正規表示式匹配模式
正規表示式匹配模式 引用了microsoft vbscript regular expressions 5.5 後就可以宣告正則相關物件了。主要有三個物件 regexp matchcollection match。1.regexp這是vb使用正規表示式匹配模式的主要物件了。其提供的屬性用於設定那些用...
正規表示式匹配模式描述
模式描述 w匹配字母數字及下劃線 w匹配非字母數字及下劃線 s匹配任意空白字元,等價於 t n r f s匹配任意非空字元 d匹配任意數字,等價於 0 9 d匹配任意非數字 a匹配字串開始 z匹配字串結束,如果是存在換行,只匹配到換行前的結束字串 z匹配字串結束 g匹配最後匹配完成的位置 n匹配乙個...
正規表示式 匹配
字串 void abtr quint32 ab 表示乙個正規表示式 template class bidirectionaliterator class allocator std allocator sub match bidirectionaliterator class match resul...