每天學習一點MySQL系列(6)——正則表達式

正則表達式的作用是匹配文本,將一個模式(正則表達式)與一個文本串進行比較。

1. 基本的字符匹配

  • regexp後面所跟的內容作爲正則表達式。
  • '.' 是正則表達式中一個特殊的字符,表示匹配任意一個字符,注意:只是一個
  • 匹配不區分大小寫,如果需要區分,需要使用binary關鍵字。
select  column1 from  TABLE where column2 regexp '9999';
--'.'匹配任意【一個】字符
select  column1 from  TABLE where column2 regexp '.999';
--不區分大小寫
select  column1 from  TABLE where column2 regexp 'Hello World';
--需要區分大小寫時,使用binary
select  column1 from  TABLE where column2 regexp binary 'Hello World';

2. 進行or匹配-使用'|'

  • 匹配模式:'exp1 | exp2 | exp3......| expn'
  • 功能類似於or語句,多個or條件可以併入單個正則表達式
select  column1 from  TABLE where column2 regexp 'keyword1|keyword2|keyword3';

3. 匹配幾個字符之一-使用'[]'

  • []是另外一種形式的or語句,匹配模式:'[exp1exp2exp3......expn]'
  • 匹配指定集合中的任意一個字符:'[exp1exp2exp3......expn]'
  • 匹配指定集合以外的字符:在集合的開始處加入'^''[^exp1exp2exp3......expn]'

4. 匹配範圍-使用'-'

  • 使用'-'來定義一個範圍,匹配模式:'[m-n]'
  • 匹配數字0-9:[0-9]等價於[0123456789]
  • 匹配字母:[a-z]

5. 匹配特殊字符-使用'\\'

  • 使用'\\'來對字符進行轉義,MySQL要求使用兩個反斜槓,MySQL解釋一個,正則表達式解釋一個。
空白元字符
元字符 \\f \\n \\r \\t \\v
說明 換頁 換行 回車 製表 縱向製表

6. 匹配字符類

常見字符集(預定義字符類)
[:digit :] 任意數字,同[0-9]
[:lower:] 任意小寫字母,同[a-z]
[:upper:] 任意大寫字母
[:alnum:] 任意字母和數字,同[a-zA-Z0-9]
[:space:] 包括空格在內的任意字符

7. 匹配多個實例

使用重複字符元,來實現對匹配數目的更強控制。

重複元字符
元字符 說明
* 0個或者多個匹配
+ 1個或者多個匹配,同{1,}
匹配位於?前面字符的0個或者1個,同{0,1},
{n} 匹配前面字符的n個
{n,} 匹配不少於n個
{n,m} 匹配數目的範圍,m不超過255

 

8. 定位符

使用定位元字符來匹配指定位置的文本

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

9. 簡單的正則表達式測試

--regexp 的返回結果:0(不匹配);1(匹配)
--輸入:
select 'puhan is a pig?' regexp 'is';
--輸出:
+-------------------------------+
| 'puhan is a pig?' regexp 'is' |
+-------------------------------+
|                             1 |
+-------------------------------+

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章