正則式(Regex)不是拿來背符號的,它是拿來把「字串裡的規則」寫成一段可執行的搜尋/抽取程式。你只要掌握幾個常用語法 + re 的四個核心 API,就能處理 80% 的資料清洗工作。
本篇你會學到什麼(先給你地圖)
- match vs search 的差異(新手最常搞混)
- findall / finditer:要列表還是要逐筆迭代
- 群組 (group):如何把「想要的片段」抽出來
- sub:批次替換,做資料清洗
- 最後用一個「Log 解析」做整合示範
1) 四個核心 API(你真的常用的就這些)
re.search:在整段字串中找「第一個符合」re.match:只在字串開頭匹配(常用來做格式驗證)re.findall/re.finditer:找出所有符合re.sub:替換(清洗資料超常用)
import re
text = "Order#A-1023 total=NT$ 1,280"
m = re.search(r"Order#([A-Z])-([0-9]+)", text)
print(m.group(0)) # Order#A-1023
print(m.group(1)) # A
print(m.group(2)) # 1023
踩雷提醒:findall 會改變回傳型態
如果你的 pattern 有群組,
findall 回傳會變成「群組 tuple 列表」。這很好用,但也很容易讓你以為資料壞掉。