點號 . 是正則中最強大也最易濫用的元字符。本文揭示其預設不匹配換行的歷史包袱、單行/多行模式差異,並給出保守使用原則與進階替代方案。
. ≡ [^\n\r] (Windows) 或 [^\n] (Unix),不匹配換行符。. 從未需匹配換行。| 工具/語言 | 啟用方式 |
|---|---|
| RegexBuddy / EditPad Pro / PowerGREP | 勾選「點號匹配換行符」 |
| Perl / PCRE | /s 修飾符(m/pattern/s) |
| .NET (C#) | RegexOptions.Singleline |
| Java | Pattern.DOTALL 或 (?s) 內嵌標誌 |
| JavaScript | 不支援單行模式,需用 [\s\S] 或 [\d\D] 替代 |
mm/dd/yy,分隔符任意# 錯誤:\d\d.\d\d.\d\d → 也會匹配 02512703(數字當分隔符)
# 改進:\d\d[-/.]\d\d[-/.]\d\d → 限定分隔符集合
# 進階:[0-1]\d[-/.][0-3]\d[-/.]\d\d → 進一步限制月份/日期範圍
.:改用明確字符類別 [^...] 或具體字符集。. 非元字符:[.-/] 直接匹配點號、連字符、斜線,無需轉義。點號雖便利,卻是「懶惰的萬能鑰匙」。精準的正則源於對資料格式的深度理解,而非貪圖寫法簡短。