讀古今文學網 > 精通正則表達式(第3版) > 支持函數 >

支持函數

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),封裝正則表達式——參見下一節。