2007年10月2日

學習正規表示式

正規表示式,原文為 Regular Expression (RE),簡單的說就是一種用於字串配對及代換的表達方式,比較常聽到的譯名還有正則運算式、正則表達式、正規表達式等等,它們指的都是同樣一件事。

正規表示式能幹嘛呢?它能讓使用人員快速依據某種規則比對出所需特定式樣的字串資料,甚至對該特定式樣進行加工處理。對於一個經常處理大量字串資料的使用者而言,學會這招可以讓工作進行的更輕鬆。

要怎麼入門呢?可以在 Google 上搜尋 半小時精通正則表達式 可以找到相關說明,例如藍色小鋪 - (轉載) 半小時精通正則表示式

看完上述介紹後,此處以文字編輯器 PSPad 為例子簡單示範正規表示式可以讓人輕鬆的處理大量的文字資料。以下是某公司大台北地區的客戶電話原始資料:

12345678
23456789
34567890
45678901
56789012
67890123
78901234
89012345
90123456

啟用正規表示式的方式:

  1. 點選替換功能,搜尋功能支援正規表示式:
  2. 必須啟用正規表示式模式才會解析正規表示式指令:
操作範例:
  1. 將所有的市話號碼加上長途冠碼:

  2. 為了方便識別,將電話號碼格式改為 (02) 9999-9999:

註:一般而言在做子匹配時會以 \1 ~ \9 做為匹配結果的替代變數(稱為標籤陳述式),但還有另種以 $1 ~ $9 為格式的標籤陳述式,PSPad 使用的是這種型式。

以上範例或許因資料量不多難以看出使用正規表示式的效益,但只要稍微想像一下如果這些資料只要成長到 10 倍 100 筆資料後即可發現使用正規表示式真的可以增加工作效率且還能避免人為修改時的錯誤。

還在加班改隔日會議上使用的資料格式嗎?快點來學正規表示式,讓資料在彈指間重整成所需的格式吧。