正規表示式(Regular Expression,簡稱 Regex)是一種描述文字模式的迷你語言。它廣泛用於搜尋、取代、驗證與文字解析。掌握基本語法後,可以高效處理許多重複性的文字工作,但也需要了解它的能力邊界。
cat 匹配連續的 c、a、t。. * + ? | ( ) [ ] { } ^ $ \ 等有特殊意義。若要匹配字面意義,通常需要跳脫(加反斜線)。[abc] 匹配 a 或 b 或 c;[a-z] 匹配小寫字母;[^0-9] 匹配非數字。\d 數字、\w 字詞字元、\s 空白,大寫通常代表相反。量詞指定前面元素的重複次數:*(0 次或更多)、+(1 次或更多)、?(0 或 1 次)、{n}、{n,m}。預設是貪婪匹配(盡可能多),加上 ? 可改為勉強匹配。
圓括號 () 用於分組與捕獲。分組讓量詞可以作用於多個字元,捕獲則把匹配到的部分存起來供之後引用或提取。| 表示或。錨點 ^ 與 $ 分別匹配開頭與結尾。
撰寫時建議從簡單開始,逐步加入條件,並用實際範例測試。不同程式語言與工具的正則引擎在細節上可能有差異(例如回溯限制、Unicode 支援)。
不可信的使用者輸入不應直接當作正則表達式執行,以免造成 ReDoS(正則拒絕服務)攻擊。即使是自己撰寫的表達式,也應避免容易產生大量回溯的模式。測試時準備正常與邊界案例,包括空字串、極長輸入與故意不符合的輸入。
線上或本地的正則測試工具可以即時顯示匹配結果、捕獲群組與取代效果。這對學習與除錯非常有幫助。輸入表達式與測試文字後,工具會標示所有匹配位置。本地工具的優點是測試資料不會離開裝置。
Wusper 的正規表示式工具提供匹配與測試功能,並在瀏覽器本地執行。適合學習語法、驗證模式與處理個人文字。生產環境的正則應經過充分測試,並考慮所用語言的具體實作差異。
先熟練字元類、量詞、錨點與基本分組。再學習捕獲、反向引用與常見修飾旗標。遇到複雜需求時,先評估是否真的適合用正則,或應改用其他文字處理方法。多練習、多測試,是掌握正則最有效的方式。