本頁重點提要

  • 01.掌握 search/match/findall/finditer/sub 的角色分工。
  • 02.群組 group() 是抽取資料的核心。
  • 03.findall 遇到群組會回 tuple 列表(正常)。

快速上手:核心 API 與群組抽取

正則式(Regex)不是拿來背符號的,它是拿來把「字串裡的規則」寫成一段可執行的搜尋/抽取程式。你只要掌握幾個常用語法 + re 的四個核心 API,就能處理 80% 的資料清洗工作。

Python

本篇你會學到什麼(先給你地圖)

  • 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 列表」。這很好用,但也很容易讓你以為資料壞掉。

Python 官方 Logo(示意)
Python 官方 Logo(示意)
Implementation Reference
import re

m = re.search(r"Order#([A-Z])-([0-9]+)", "Order#A-1023")
print(m.group(1), m.group(2))
Switch Page