SQL中的正規表示式 REGEXP

2021-04-21 02:01:41 字數 2966 閱讀 6939

sql的查詢語句中,有時會需要引進正規表示式為其複雜搜尋指定模式。下面給出一些regexp在mysql語句中應用(非全部):

1) ^

匹配字串的開始部分。

mysql>select 'fo/nfo' regexp '^fo$';-> 0
mysql>select 'fofo' regexp '^fo';-> 1
2) $匹配字串的結束部分。

mysql>select 'fo/no' regexp '^fo/no$';-> 1
mysql>select 'fo/no' regexp '^fo$';-> 0
3) .匹配任何字元(包括回車和新行)。

mysql>select 'fofo' regexp '^f.*$';-> 1
mysql>select 'fo/r/nfo' regexp '^f.*$';-> 1

4) [:character_class:]在括號表示式中(使用[和]),[:character_class:]表示與術語類的所有字元匹配的字元類。標準的類名稱是:

alnum

文字數字字元

alpha

文字字元

blank

空白字元

cntrl

控制字元

digit

數字字元

graph

圖形字元

lower

小寫文字字元

print

圖形或空格字元

punct

標點字元

space

空格、製表符、新行、和回車

upper

大寫文字字元

xdigit

十六進製制數字字元

它們代表在ctype(3)手冊頁面中定義的字元類。特定地區可能會提供其他類名。字元類不得用作範圍的端點。

mysql>select 'justalnums' regexp '[[:alnum:]]+';-> 1

mysql>select '!!' regexp '[[:alnum:]]+';-> 0

5) [[:<:]], [[:>:]]

這些標記表示word邊界。它們分別與word的開始和結束匹配。word是一系列字字元,其前面和後面均沒有字字元。字字元是alnum類中的字母數字字元或下劃線(_)。

mysql>select 'a word a' regexp '[[:<:]]word[[:>:]]';-> 1
mysql>select 'a xword a' regexp '[[:<:]]word[[:>:]]';-> 0
要想在正規表示式中使用特殊字元的文字例項,應在其前面加上2個反斜槓「/」字元。mysql解析程式負責解釋其中乙個,正規表示式庫負責解釋另乙個。例如,要想與包含特殊字元「+」的字串「1+2」匹配,在下面的正規表示式中,只有最後乙個是正確的:

mysql>select '1+2' regexp '1+2';-> 0
mysql>select '1+2' regexp '1/+2';-> 0
mysql>select '1+2' regexp '1//+2';-> 1

字元

含意 /

做為轉意,即通常在"/"後面的字元不按原來意**釋,如/b/匹配字元"b",當b前面加了反斜桿後//b/,轉意為匹配乙個單詞的邊界。

-或-

對正規表示式功能字元的還原,如"*"匹配它前面元字元0次或多次,/a*/將匹配a,aa,aaa,加了"/"後,/a/*/將只匹配"a*"。

^ 匹配乙個輸入或一行的開頭,/^a/匹配"an a",而不匹配"an a"

$ 匹配乙個輸入或一行的結尾,/a$/匹配"an a",而不匹配"an a"

* 匹配前面元字元0次或多次,/ba*/將匹配b,ba,baa,baaa

+ 匹配前面元字元1次或多次,/ba*/將匹配ba,baa,baaa

? 匹配前面元字元0次或1次,/ba*/將匹配b,ba

(x)

匹配x儲存x在名為$1...$9的變數中

x|y

匹配x或y

精確匹配n次

匹配n次以上

匹配n-m次

[xyz]

字符集(character set),匹配這個集合中的任一乙個字元(或元字元)

[^xyz]

不匹配這個集合中的任何乙個字元

[/b]

匹配乙個退格符

/b 匹配乙個單詞的邊界

/b 匹配乙個單詞的非邊界

/cx

這兒,x是乙個控制符,//cm/匹配ctrl-m

/d 匹配乙個字數字元,//d/ = /[0-9]/

/d 匹配乙個非字數字元,//d/ = /[^0-9]/

/n 匹配乙個換行符

/r 匹配乙個回車符

/s 匹配乙個空白字元,包括/n,/r,/f,/t,/v等

/s 匹配乙個非空白字元,等於/[^/n/f/r/t/v]/

/t 匹配乙個製表符

/v 匹配乙個重直製表符

/w 匹配乙個可以組成單詞的字元(alphanumeric,這是我的意譯,含數字),包括下劃線,如[/w]匹配"$5.98"中的5,等於[a-za-z0-9]

/w 匹配乙個不可以組成單詞的字元,如[/w]匹配"$5.98"中的$,等於[^a-za-z0-9]。

正規表示式regex

正規表示式 regular expression 是乙個字串,表示一定的規則 api文件的pattern類中有其具體的規則定義 注意 regex嚴格區分大小寫 package cn.itcast.demo02 public class regexdemo02 檢驗郵箱位址是否合法 規則 123456...

RegEx正規表示式

eg select prod name from products where prod name regexp 000 描述了乙個規則,通過這個規則可以匹配一類字串平台雲 字母 數字 漢字 下劃線 以及沒有特殊定義的標點符號,都是 普通字元 能夠與多種字元匹配的表示式 注意區分大小寫,大寫是相反的...

Regex正規表示式學習

1.檔名查詢常用的兩通配付是 其中 任意,代表乙個字元,舉例匹配.txt檔案 txt,匹配擴充套件是3字元 2.正規表示式中 和 匹配任意字元用 匹配乙個支付 舉例匹配.txt檔案 txt 其中 需要用 進行轉義,匹配副檔名是3字元 3.正規表示式的分類,可以按照是否大小寫,是否標點符號,是否數字進...