跳到主要內容
Cypher's Practical Coding
正在啟動 Python 環境(首次約 15 秒)...

Python 正則表達式

電商表單裡充滿電話、Email、訂單編號等格式化資訊。正則表達式(regex)就像「超強的尋找取代」——不用一筆一筆肉眼找,寫個 pattern 就能自動搜尋、抓取或遮蔽。

你會學到什麼

  • re.search 找到第一個符合的文字
  • re.findall 一次抓出所有目標
  • re.sub 批次替換敏感資訊

常用 Pattern 速查表

目的Pattern範例匹配
台灣手機09\d{8}0911222333
Email[\w.-]+@[\w.-]+annie@mail.com
數字片段\d+50012

搜尋第一個:re.search

情境:客服留言混著多種訊息,我們只想先確認第一支電話是否存在。

小提醒:re.search 只回傳第一個符合的 match 物件,用 .group() 拿出文字。找不到時回傳 None,所以要先判斷再取值。

找出全部:re.findall

情境:客服資料裡可能有多個聯絡人,我們要一次收集所有 Email 方便寄信。

小提醒:re.findall 直接給你字串列表。若 pattern 有括號群組,會只回傳群組內容;不想要群組請用 (?:...)

批次替換:re.sub

情境:回應客訴時要避免洩漏電話,直接用替換批次遮蔽。

小提醒:re.sub(pattern, replacement, text, count=0)count 預設 0 代表全部替換;想只遮蔽一支就設 count=1

AI 協作:學了這個,跟 AI 怎麼配合?

正則表達式幾乎不可能自己從零寫對——讓 AI 寫,你負責測試和驗證。

你的人類優勢:

  • 你知道要抓取什麼模式(手機號碼、Email、訂單編號格式)
  • 你能準備測試案例,驗證 regex 有沒有漏抓或錯抓

可以這樣跟 AI 說:

幫我寫一個 regex,從文字中抓出所有手機號碼(09 開頭、10 碼數字),用 re.findall()。

練習題

互動示範

DEMO 1可以修改程式碼試玩
DEMO 2可以修改程式碼試玩
DEMO 3可以修改程式碼試玩

挑戰任務

Task 1

從句子中抓出所有訂單號碼(只含數字),用列表印出:'訂單5001已出貨,訂單5002處理中'

Task 2

將字串 '聯絡電話:0988777666' 內的電話改成 '******' 後印出

Task 3

檢查 'customer@mail.com' 是否是 email 格式,是的話印出 'OK'

BackNext Lesson →