天天看點

用正規表達式進行搜尋用正規表達式進行搜尋

用正規表達式進行搜尋

正規表達式的介紹

正規表達式的使用環境

  • 如果你想從一個文本檔案中提取電話号碼
  • 如果你需要查找名字中間有數字的所有檔案
  • 如果你想在一個文本塊中找到所有重複的單詞
  • 如果你想替換一個頁面中的所有URL為這些URL的實際HTML連結

基本字元比對

文法結構

SELECT 列名
FROM 表格
WHERE 列名 REGEXP 'XX'
ORDER BY 列名
           

表示傳回列中列名中包含(XX)子列的所有行

除了關鍵字LIKE被REGEXP代替外,這個文法結構和LIKE的語句相同

LIKE與REGEXP的差別

如果LIKE語句想和REGEXP語句有相同的作用,需要結合(_或%)來使用

進行OR比對

文法結構

SELECT 列名
FROM 表格
WHERE 列名 REGEXP 條件一 | 條件二
ORDER BY 列名;
           

這個語句用于檢索清單中滿足條件一或條件二的所有行

比對幾個字元之一

比對任何單一字元。但是如果比對特定的字元,怎麼辦,可以通過指定一組用[和]括起來的字元來完成。

文法結構

SELECT 列名
FROM 表格
WHERE 列名 REGEXP '[abc] XX'
ORDER BY 列名;
           

該語句意義為:删選除列值滿足a XX 或 b XX 或 c XX的所有的列

正規表達式[abc]xx是[a|b|c]xx的縮寫

比對範圍

要是比對範圍,将比對字元的[abc]換成[a-c]即可

比對特殊字元

要比對列值中包含特殊字元,必須使用\ \為作為前導

空白元字元

元字元 說明
\ \f 換頁
\ \n 換行
\ \r 回車
\ \t 制表
\ \v 縱向制表

比對字元類

字元類

說明
[ :alnum: ] 任意字母和數字(同[a-ZA-z0-9])
[ :alpha: ] 任意字元(同[a-zA-Z])
[ :black: ] 空格和制表(同[ \ \t])
[ :cntrl: ] ASCLL控制字元(ASCLL 0到31和127)
[ :digit: ] 任意數字(同[0-9])
[ :graph: ] 與[ :print: ]相同,但不包括空格
[ :lower: ] 任意小寫字母(同[a-z])
[ :print: ] 任意可列印字元
[ :punct: ] 即不在[ :alnum: ]又不在[ :cntrl: ]中的任意字元
說明
[ :space: ] 包括空格在内地任意空白字元
[ :upper: ] 任意大寫字元
[ :xdigit: ] 任意十六進制數字

比對多個執行個體

重複元字元

元字元 說明
* 0個或多個比對
+ 1個或多個比對
0個或1個比對
{n} 指定數目的比對
{n,} 不少于指定數目的比對
{n,m} 比對數目的範圍

定位符

定位元字元

元字元 說明
^ 文本的開始
$ 文本的結尾
[[: < :]] 詞的開始
[[: > :]] 詞的結尾

繼續閱讀