認識正規表示式
正規表示式(Regular Expression,常簡稱 regex 或 RE)是一套描述「字串長什麼樣子」的微型語言。你寫一組規則,引擎就幫你在文字裡找、抽、改、切。Python 透過標準函式庫 re 提供這套能力;語法本身跨語言大致相通,細節以各語言文件為準。
本站用繁體中文整理日常真正會用到的那一層,範例一律用 Python。
最需要掌握的 20%
學 regex 不必先把整份規格背完。先把下面七件事做熟,就能處理大多數「找字、驗證、抽欄位、批次改字」:
- 字元類:
.任意一字(不含換行)、\d數字、\w單字字元、\s空白、[...]自訂集合。 - 量詞:
*零次以上、+一次以上、?零或一次、{n,m}指定次數;預設貪婪。 - 錨點:
^行首、$行尾、\b單字邊界。它們對的是「位置」,不是某一個字。 - 群組:
(…)捕獲、(?:…)不捕獲、(?P<name>…)具名;用\1或\g<name>回溯。 - Python API:
re.search找第一處、re.findall/re.finditer找全部、re.sub取代、re.split切開、re.compile重用。 - 原始字串:模式一律寫
r"...",否則\n、\b會先被 Python 吃掉。 - 旗標:
re.I忽略大小寫、re.M讓^$對每一行、re.S讓.含換行、re.X允許把模式拆行加註解。
-
語法基礎
-
Python re 模組
-
實作範例
-
影音教學
regex 適合什麼場景
- 驗證格式:電子郵件、手機、日期、網址看起來合不合理。
- 從一段文字抽出欄位:訂單編號、價格、檔名、日誌時間戳。
- 批次改字:把空白正規化、把日期換成另一種格式。
- 切開字串:用多種分隔符切 CSV 以外的雜訊文字。
它不是萬用剖析器。HTML、JSON、CSV 有專用函式庫時,不要硬用 regex。寫太「聰明」的模式難讀、難除錯,也容易踩回溯災難(catastrophic backtracking)。
驗證能擋明顯錯誤,不能當唯一防線
例如電子郵件 regex 只能抓「長得像」;真正能不能寄到,要靠寄信或後端確認。密碼規則也一樣:regex 檢查形狀,安全性還需要雜湊、長度與政策。
官方學習資源
正規表示式沒有單一「官方證照」。Python 的權威是官方 HOWTO 與 re 參考文件;語法觀念可對照 Google 的 Python 課與哈佛 CS50P。
Python 官方文件(必看)
入門讀 Regular Expression HOWTO;查函式與旗標用 re 模組。英文原文:HOWTO、re。
Google Python Class
建議學習順序
- 字元、集合、跳脫 與 量詞
- 錨點與邊界、群組
- search / match / fullmatch 與 findall / finditer
- 驗證 與 擷取
- 需要時再看 sub / split、compile 與旗標、日誌
想對畫面,先看 官方影音 的 Google 課或 CS50P,再跟 YouTube 優質教學 的 Corey Schafer。想認識唯客學院,請看 關於我們。