日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

通配符和正则表达式

發布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通配符和正则表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通配符過濾

1.like操作符

2.百分號通配符(%)

在搜索串中,%表示任何字符出現的任意次數。%不能匹配null,如like ‘jet%’表示以jet開頭的后面不管多少字符的匹配。

如果區分大小寫查詢,使用binary:

select * from `test` where binary `name` = "Test"

3.下劃線通配符(_)

下劃線只匹配單個字符而不是多個字符,like ‘_ton’

使用通配符會使查詢變慢。


正則表達式

1.基本字符匹配

select column from table where column regexp '1000' order by column;

該語句檢索列column包含文本1000的所有行;它告訴MySQL:regexp后所跟的東西作為正則表達式(與文字正文1000匹配的一個正則表達式)處理。

select column from table where column regexp '.000' order by column;

該語句中的正則表達式(.)**,**是正則表達式語言中的一個特殊字符,表示匹配任意一個字符(該語句也可以使用like和通配符完成)

like和regexp的區別:

①like匹配整個列;

select column from table where column like‘1000’ order by column;

該SQL語句將不返回數據,因為like匹配整個列,如果被匹配的文本在列值中出現,like將不會找到它,相應的行也不會被返回(除非使用通配符)

②regexp在列值內進行匹配

select column from table where column regexp '1000' order by column;

該SQL語句會返回一行數據,如果被匹配的文本在列值中出現,regexp將會找到它,相應的行將被返回(如果希望regexp匹配整個列值,使用^和$定位符{anchor})即可

MySQL中正則表達式匹配不區分大小寫,如希望區分大小寫,可使用binary關鍵字,如where column regexp binary ‘test .000’

2.進行or匹配

select column from table where column regexp 'X|Y' order by column;

or表示匹配其中之一,功能雷雨與select語句中的or語句,多個or條件可并入單個正則表達式

3.匹配幾個字符之一

select column from table where column regexp '[XYZ]test' order by column;

[]是另一種形式的or語句,作用是匹配指定的(其中之一)字符;正則表達式[XY]test為[X|Y|Z]test的縮寫,它的意思是匹配X或者Y或者Z

字符集合也可以被否定,即匹配除指定字符外的任何東西,為否定一個字符集,可以在集合開始處設置一個‘’例如[XYZ]([]定義更準確,|如果不括起來,則應用于整個串

集合可以用來定義要匹配的一個或多個字符

比如[0123456789],為了簡化這種類型的集合,可使用(-)來定義一個范圍,即[0-9];(范圍不僅僅局限于數值,還可以使字母字符等)

4、匹配特殊字符

正則表達式由具有特定含義的特殊字符構成;如果要匹配這些特殊字符,就需要用\為前導;\-表示查找-,\.表示查找.

select column from table where column regexp ‘\-’ order by column;

這種處理方式就是所謂的轉義(escaping),正則表達式內具有特殊意義的所有字符都必須以這種方式轉義;(為了匹配反斜杠{}字符本身,需要使用\\)

PS:多數正則表達式實現使用單個反斜杠轉義特殊字符,以便能夠使用這些字符本身,而MySQL要求兩個反斜杠(MySQL自己解釋一個,正則表達式庫解釋一個)

\也用來引用元字符(具有特殊含義的字符),如下:

5、匹配字符類

**字符類(character class):**有時候需要檢索出我們需要的數字、所有字母字符或所有數字字母字符等的匹配,我們可以使用預定義的字符集,稱為字符類;如下:

6、匹配多個實例

有時候需要對匹配的數目進行更強的控制,比如:尋找所有的數,不管數中包含多少數字,或尋找一個單詞并尾隨一個s(如果存在)等情況,我們可以利用正則表達式中的重復元字符來完成;如下

select column from table where column regexp ‘\([0-9] sticks?\)’ order by column;

上面的正則表達式‘\([0-9] test?\)’意為:\匹配([0-9]匹配任意數字,這里指匹配的數值范圍,sticks?匹配stick和sticks{?使s可選,因為?匹配它前面任何字符的0或者1次出現})

7、定位符

有時候為了匹配特定位置的文本,需要使用定位符,常用定位符列表如下:

例如:找出一個以一個數(包括小數點開始的數)開始的所有數值,簡單搜索[0-9\.]或([[:digit:]\.])不行,因為它將在文本內任意位置查找匹配,可以使用^定位符,如下

select column from table where column regexp ‘1’ order by column;

^匹配串的開始,有兩種用法:

在集合中(用[和]定義),用它來否定該集合

用來指串的開始處

**使regexp和like起相同作用:**like匹配整串二regexp匹配子串,可以利用定位符,用^開始每個表達式,用$結束每個表達式,就可以使regexp和like作用一樣


  • 0-9\. ??

  • 總結

    以上是生活随笔為你收集整理的通配符和正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。