早期的電腦作業系統(例如 UNIX 系統)都是以文字為介面,因此對於文字的處理與運算也就有一套特別精心規劃的方式,其中最為人所津津樂道的產出,就是通用運算式(Regular Expressions)的制訂和其廣泛的應用。通用運算式最早出現在 UNIX 的文字編輯程式,例如 ed、vi 等,但由於其功能強大、符號簡潔,也常被用在以 UNIX 為基礎的程式語言,例如 Perl 等。近年來在 Web 上使用的 JavaScript 以及 VBScript 也加入了通用運算式的功能,常被用來驗證或修改使用者在表單輸入的字串,其重要性可見一斑。
MATLAB 在第六版才開始支援通用運算式,這個新功能,將 MATLAB 由「數值計算」的領域推進到「字串計算」的領域,再加上原有的資料庫工具箱(Database Toolbox),因此可預見在短期的未來,MATLAB 將成為從事計算語言學(Computational Linguistics)或自然語言處理(Natural Language Processing,簡稱 NLP)的研究人員不可或缺的計算工具。
事實上,一般電腦使用者平常就已經在使用通用運算式了,只是不自知而已。例如,在 DOS 視窗下,若要查詢副檔名為 txt 的檔案,只要在 DOS 視窗下輸入「dir *.txt 」即可,其中的「*」就是用來代表任意的字串(含空字串)。若要查詢主檔名是以 data 開始且其後接上兩個字元的 txt 檔案,我們只要在 DOS 視窗下輸入「dir data??.txt」即可,其中的「?」就是代表一個任意字元(但不包含空字元)。上述所用的星號和問號,就是通稱的「萬用符號」(Wild Cards,例如撲克牌中的鬼牌,在接龍時可以代表任意點數和花色),可以讓我們以簡單的符號來描述特定的某一類字串,這就是通用運算式的基本概念。
換句話說,通用運算式的終極目標就是「用簡單的符號來代表複雜的字串,以便進行特定字串的比對、代換及抽取」。欲達到此目的,通用運算式本身也是一列字串,包含了一般字元 (例如 a 到 z 的字元 ) 和「超字元」(Metacharacters,例如之前所提到的星號和問號)的特殊字元,整個通用運算式可以看成是一個字串樣版,可被用來比對特定的字串,以便進行此特定字串的代換或抽取。以下將逐步介紹通用運算式的相關程式設計和應用。
MATLAB程式設計:進階篇