首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 正則表達式 REGEXP 完全指南:從基礎匹配到定位符的 10 大核心技巧

     編輯:MySQL 綜合教學

MySQL 正則表達式 REGEXP 完全指南:從基礎匹配到定位符的 10 大核心技巧

當 LIKE 與通配符無法滿足複雜文本過濾時,REGEXP 提供強大的模式匹配能力。本文基於《MySQL必知必會》學習筆記,系統梳理 10 大核心技巧,含字符匹配、OR 分支、字符集、範圍、轉義、字符類、量詞、定位符,附實戰 SQL 與結果圖解。

一、 基礎語法

SELECT * FROM table WHERE column REGEXP 'pattern';
  • REGEXP 不區分大小寫(預設),區分大小寫用 REGEXP BINARY。
  • MySQL 8.0 支持 REGEXP_LIKE()、REGEXP_SUBSTR()、REGEXP_REPLACE() 等函數。

二、 10 大核心技巧詳解

1. 基礎字符匹配

SELECT * FROM student WHERE name REGEXP '1'; -- 含字符 '1' 的記錄

基礎匹配

2. OR 分支匹配(|)

SELECT * FROM student WHERE name REGEXP '123|456'; -- 含 123 或 456

OR 匹配

3. 字符集合匹配([])

SELECT * FROM student WHERE name REGEXP '[02468]'; -- 含任意偶數數字

等價於 0|2|4|6|8。
字符集合

4. 範圍匹配(-)

SELECT * FROM student WHERE name REGEXP '[0-9]';   -- 任意數字
SELECT * FROM student WHERE name REGEXP '[a-z]';   -- 任意小寫字母
SELECT * FROM student WHERE name REGEXP '[A-Z]';   -- 任意大寫字母

範圍匹配

5. 特殊字符轉義(\\)

元字符 . [ ] ( ) | * + ? ^ $ { } \ 需雙反斜杠轉義。

SELECT * FROM student WHERE name REGEXP '\\.'; -- 匹配字面點號

不轉義 . 會匹配任意單字符。
轉義匹配

6. 字符類簡寫([:class:])

MySQL 使用 POSIX 字符類,不同於 PCRE 的 \d \w \s。

字符類含義等價寫法
[:digit:]數字[0-9]
[:alpha:]字母[a-zA-Z]
[:alnum:]字母數字[a-zA-Z0-9]
[:lower:]小寫字母[a-z]
[:upper:]大寫字母[A-Z]
[:space:]空白字符[ \t\r\n\v\f]
[:punct:]標點符號標點字符集

字符類表格

SELECT * FROM student WHERE name REGEXP '[[:digit:]]'; -- 含數字

7. 量詞:控制匹配次數

量詞含義示例
*0 次或多次'ab*c' 匹配 ac, abc, abbc...
+1 次或多次'ab+c' 匹配 abc, abbc...
?0 次或 1 次'ab?c' 匹配 ac, abc
{n}恰好 n 次'a{3}' 匹配 aaa
{n,}至少 n 次'a{2,}' 匹配 aa, aaa...
{n,m}n 到 m 次'a{1,3}' 匹配 a, aa, aaa
SELECT * FROM student WHERE name REGEXP 'rang?'; -- ran 或 rang

量詞示例

量詞表格1

量詞表格2

8. 定位符:鎖定位置

定位符含義
^字符串開頭(集合內 [^...] 表示排除)
$字符串結尾
[[:<:]]單詞左邊界
[[:>:]]單詞右邊界
SELECT * FROM student WHERE name REGEXP '^\\.'; -- 以點開頭

定位符表格

定位符示例

9. 否定字符集 [^...]

SELECT * FROM student WHERE name REGEXP '[^0-9]'; -- 含非數字字符

10. 綜合實戰:驗證郵箱格式

SELECT email FROM users 
WHERE email REGEXP '^[[:alnum:]_.-]+@[[:alnum:]-]+\\.[[:alpha:]]{2,}$';

三、 學習建議

「不要強迫自己背誦細節,多寫幾遍、查幾次手冊,肌肉記憶自然形成。需要時現查現用,效率最高。」

  • 常用模式收藏為代碼片段。
  • 複雜正則在線測試工具(regex101.com)驗證後再入 SQL。
  • 大表 REGEXP 會全表掃描,必要時建全文索引或應用層預過濾。

掌握這 10 大技巧,覆蓋 95% 以上的業務文本匹配場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved