Support Functions
除了之前討論過的便捷函數,還有一些靜態的支持函數:
Regex.Escape(string)
Regex.Escape(…)返回此字符串的副本,其中的元字符會進行轉義。這樣處理的字符串就能夠作為文字字符串供正則表達式使用。
例如,如果用戶的輸入保存在字符串SearchTerm中,我們可以這樣構建正則表達式:
這樣,用戶輸入的元字符就不會被特殊處理了。如果不轉義,假設用戶輸入了『:-)』,就會拋出ArgumentException異常(☞419)。
Regex.Unescape(string)
這個函數有點奇怪,它接收一個字符串,返回此字符串的副本,不過要處理其中的元字符,去掉其他的反斜線。如果輸入的是『\:\-\)』,返回值就是『:-)』。
字符縮略表示法也會被解碼。接收的字符串中的『\n』會被替換為換行符,『\u1234』會被替換為對應的Unicode字符。第407頁列出的所有字符縮略表示法都會被處理。
我想像不出 Regex.Unescape 有多麼重要的價值,不過瞭解轉義規定的用戶也許能把它當作生成VB字符串的通用工具。
Match.Empty
此函數返回代表匹配失敗的Match對象。它的用處可能在於,如果初始化的某個Match對像將來不一定會被用到,但又必須能夠查詢。這裡有個簡單的例子:
如果字符串數組EmailHeaderLines沒有任何行(或者沒有Subject行),程序中的循環就不會設置 SubMatch,如果 SubMatch沒有初始化,循環之後檢查 SubMatch會得到一個空引用異常。這種情況下用Match.Empty來初始化就很方便。
Regex.CompileToAssembly(…)
它容許用戶創造一個裝配件(assembly),封裝正則表達式——參見下一節。