本頁重點提要

  • 01.語法拆成:字元類/次數/邊界/集合/群組。
  • 02.命名群組可讀性最好,推薦優先使用。
  • 03.sub 做資料清洗超常用:去非數字/規格化空白。

常用語法 10 招:命名群組與 sub 清洗

你可以把 Regex 想像成「字串的積木」。下面是最常用、也最值得先熟練的語法。

  • . 任意字元、\d 數字、\w 英數底線、\s 空白
  • + 一次以上、* 零次以上、? 零或一次、{m,n} 次數區間
  • ^ 行首、$ 行尾(做格式驗證必備)
  • [...] 字元集合、[^...] 反向集合
  • (...) 群組、(?P<name>...) 命名群組

建議你用「命名群組」

命名群組會讓程式碼可讀性直接上升一個等級:(?P<year>\d{4})group(1) 更直觀。
import re

line = "2026-02-10 10:12:03 INFO user=jerry id=8511956003"
pat = r"(?P<date>\d{4}-\d{2}-\d{2})\s+(?P<time>\d{2}:\d{2}:\d{2})\s+(?P<level>INFO|WARN|ERROR)\s+user=(?P<user>\w+)\s+id=(?P<id>\d+)"

m = re.search(pat, line)
print(m.group('level'), m.group('user'), m.group('id'))

常見資料清洗:sub 兩個套路

import re

s = "NT$ 1,280"
value = int(re.sub(r"[^0-9]", "", s))
print(value)  # 1280

text = "a\t\t b   c\n\n d"
print(re.sub(r"\s+", " ", text).strip())

Implementation Reference
import re

pat = r"(?P<year>\d{4})-(?P<mon>\d{2})-(?P<day>\d{2})"
print(re.search(pat, "2026-02-10").groupdict())
Switch Page