SQL中的字符串正則表達式常見示例代碼
正則表達式的基本概念
所謂正則表達式(Regular Expression,簡稱regex
或regexp
)是一種用于匹配字符串中字符組合的模式描述工具。它通過一系列特殊的字符和符號來定義一種約定俗成的規(guī)則,用于查找、匹配、替換或驗證字符串中的特定內(nèi)容。在表單提交驗證、路由映射、文本處理等方面大放異彩,基本上所有編程語言都有特定的一套正則機制以供程序員使用。
正則表達式的基礎(chǔ)字符
正則表達式由普通字符和特殊符號組成,一共可以分為兩種大類。首先是元字符,由特殊符號組成,代表的是正則匹配中的匹配準則。轉(zhuǎn)義字符通常由特殊符號\
+字符組成,是某種字符表達類型的統(tǒng)稱,當(dāng)匹配內(nèi)容中本身帶有\
時,需要再添加一個轉(zhuǎn)義,例如\\
。
元字符
.
:匹配任意一個字符(除了換行符)。*
:匹配零次或多次的字符或子模式。+
:匹配一次或多次的字符或子模式。?
:匹配零次或一次的字符或子模式。{n}
:匹配重復(fù)n次的字符或子模式。{n,}
:匹配重復(fù)≥n次的字符或子模式。{n,m}
:匹配重復(fù)n到m次的字符或子模式。[]
:匹配方括號內(nèi)的任意一個字符。[^]
:匹配不在方括號內(nèi)的任意一個字符。^
:表示匹配字符串以…開頭。$
:表示匹配字符串以…結(jié)尾。()
:分組,用于拆解匹配的內(nèi)容。|
:邏輯或,表示匹配多種模式中的任意一個。-
:當(dāng)其不在[]
內(nèi)則就代表字符-
,在[]
內(nèi)表示范圍,例如[a-z]
表示任意小寫字符。
轉(zhuǎn)義字符
\d
:匹配任意數(shù)字字符(0-9)。\w
:匹配任意字母或數(shù)字或下劃線字符(等價于[a-zA-Z0-9_]
)。\s
:匹配任意空白字符(空格、制表符、換行符等)。\b
:匹配單詞的開始與結(jié)束,例如\bword\b
可以匹配字符串中的整個單詞word
,而不會混淆其他包含word
的內(nèi)容。\D
:匹配任意非數(shù)字字符。\W
:匹配任意非字母、數(shù)字、下劃線字符(等價于[^a-zA-Z0-9_]
)。\S
:匹配任意非空白字符。
常見的正則示例
- 匹配電子郵件地址
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b
解釋:匹配以字母、數(shù)字、點號、下劃線等開頭(可出現(xiàn)一次或多次),后跟@
,再跟轉(zhuǎn)義的.
,最后以域名和頂級域名(字母且至少有兩個字符)結(jié)尾。
- 匹配日期
\d{4}-\d{2}-\d{2}
解釋:YYYY-MM-DD,匹配四個數(shù)字,跟-
,后跟兩個數(shù)字,再跟-
,最后又是兩個數(shù)字。
- 匹配手機號碼
^1[3-9]\d{9}$
解釋:以1
開頭,第二位是3
到9
之間的數(shù)字,后面跟著九位數(shù)字結(jié)尾。
- 匹配網(wǎng)頁元素
<[^>]+>(.*)</[^>]+>
解釋:<xxx>…</xxx>。
SQL中應(yīng)用正則表達式
字符串查找
在SQL中若要應(yīng)用正則表達式完成字符串查找功能,篩選出滿足條件的記錄時:
SELECT * FROM 表名 WHERE 字符串字段 REGEXP '正則表達式';
注意:僅字符串字段支持使用REGEXP
+正則語句進行查找功能。
字符串替換
在SQL中若要應(yīng)用正則表達式完成字符串替換功能時:
SELECT regexp_replace(str, pattern, replace_str, occurrence) FROM 表名;
其中:
str
:表示需要應(yīng)用正則替換的字符串表達;pattern
:表示正則表達式,需要帶上英文引號;replace_str
:表示當(dāng)匹配到樣式后需要將其替換的新字符串表達;occurrence
:取值為整型常量,表示替換的程度,該值取0時替換掉所有滿足正則條件的匹配子串,大于0時表示將第幾個滿足正則條件的匹配子串替換。
常見案例
例題: 查找有效郵箱的用戶
一個有效的電子郵件具有前綴名稱和域,其中:
- 前綴名稱是一個字符串,可以包含字母(大寫或小寫),數(shù)字,下劃線
_
,點.
和/
或破折號-
; - 前綴名稱必須以字母開頭;
- 域名稱為
@leetcode.com
。
代碼:
SELECT user_id, name, mail FROM Users WHERE mail REGEXP '^[a-zA-Z][a-zA-Z0-9_.-]*\\@leetcode\\.com$';
總結(jié)
到此這篇關(guān)于SQL中字符串正則表達式常見示例代碼的文章就介紹到這了,更多相關(guān)SQL字符串正則表達式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL Server 2012 安裝圖解教程(附sql2012下載地址)
在安裝微軟最新數(shù)據(jù)庫SQL Server 2012之前,編者先確定一下安裝環(huán)境:Windonws 7 SP1,32位操作系統(tǒng)、CPU是2.1GHz賽揚雙核T3500,內(nèi)存2.93GB2013-04-04sqlserver禁止management studio的自動提交事務(wù)
默認management studio是自動提交事務(wù),即一個語句就一個事務(wù),那么如何禁止其自動提交呢?下面有個不錯的方法,大家可以參考下2014-06-06