正在啟動 Python 環境(首次約 15 秒)...
Python 正則表達式
電商表單裡充滿電話、Email、訂單編號等格式化資訊。正則表達式(regex)就像「超強的尋找取代」——不用一筆一筆肉眼找,寫個 pattern 就能自動搜尋、抓取或遮蔽。
你會學到什麼
- 用
re.search找到第一個符合的文字 - 用
re.findall一次抓出所有目標 - 用
re.sub批次替換敏感資訊
常用 Pattern 速查表
| 目的 | Pattern | 範例匹配 |
|---|---|---|
| 台灣手機 | 09\d{8} | 0911222333 |
[\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 →