Regex(正規表示式)
又稱:正則表達式 · 正規表示式 · regular expression · 模式匹配 · regex 是什麼
一套描述「文字長什麼樣子」的記號,用來在大量文字裡找出、或驗出符合那個樣子的片段。
你會在什麼時候遇到它
AI 工具用它做兩件事:從模型吐出來的一整段文字裡抓出你要的那部分,以及檢查輸入的格式對不對。你會在使用者自訂的過濾規則、agent 的解析程式碼、還有某些錯誤訊息裡看到它。看不懂,你就只能整段複製去問 AI —— 而它給你的 regex 常常只在它自己想到的那種輸入上有效。
打個比方
像通緝令上的特徵描述:「身高 175 到 180、左臉有疤」。描述越精確,抓錯人的機率越低;但描述本身不會告訴你世界上有沒有這個人 —— 一個都沒匹配到時,你分不清是「真的沒有」還是「描述寫錯了」。
最小範例
import re
line = "訂單 ORD-20260930 已完成,金額 1280 元"
m = re.search(r"ORD-\d+", line)
print(m.group(0) if m else "沒找到") # → ORD-20260930
print(re.findall(r"\d+", line)) # → ['20260930', '1280']\d 是「一個數字」,+ 是「一個以上」,所以 ORD-\d+ 讀作「ORD- 後面接一串數字」。注意第二行把金額也抓進來了 —— regex 只認樣子,不懂意思。
最常搞錯的地方
- 用 regex 去解析結構化輸出(例如模型回傳的 JSON)。JSON 有正規的解析器;regex 遇到巢狀、跳脫字元、換行就會悄悄抓錯,而且不報錯。正解是讓模型走結構化輸出或工具呼叫。
- 以為「沒匹配到」等於「資料裡沒有」。更多時候是格式差一個空格、大小寫不同、或全形半形混在一起。把 regex 印出來、拿真實資料試一遍,才知道是哪一種。