規則運算式選項
更新:2007 年 11 月
您可以利用會影響行為的選項來修改規則運算式模式。規則運算式選項可以透過下列兩種基本方法之一來設定:可以在 Regex(pattern, options) 建構函式的 options 參數中指定,其中 options 是 RegexOptions 列舉值的位元的 OR 組合;或者可以在規則運算式模式中使用內嵌 (?imnsx-imnsx:) 群組建構或 (?imnsx-imnsx) 其他建構來設定。
在內嵌選項建構中,選項或一組選項之前的減號 (-) 會關閉這些選項。例如,內嵌建構 (?ix-ms) 會開啟 IgnoreCase 和 IgnorePatternWhiteSpace 選項,關閉 Multiline 和 Singleline 選項。所有規則運算式選項預設是關閉的。
下表列出 RegexOptions 列舉型別 (Enumeration) 的成員以及對等的內嵌選項字元。請注意,RightToLeft 和 Compiled 選項只能套用到運算式做為一個整體,而且不允許內嵌 (它們只能在 Regex 建構函式的 options 參數中指定)。None 和 ECMAScript 選項不允許內嵌。
RegexOption 成員 |
內嵌字元 |
描述 |
---|---|---|
None |
N/A |
指定無選項設定。 |
IgnoreCase |
i |
指定區分大小寫的比對。 |
Multiline |
m |
指定多行模式。變更 ^ 和 $ 的意義,使它們分別在任何一行的開頭和結尾作比對,而不只是整個字串的開頭和結尾。 |
ExplicitCapture |
n |
指定唯一有效的擷取是 (?<name>) 格式的明確命名群組或編號群組。這允許括號充當非擷取群組,而避免運算式 (?:) 的語法不便。 |
Compiled |
N/A |
指定規則運算式要編譯為組件 (Assembly)。為規則運算式產生 Microsoft 中繼語言 (Microsoft Intermediate Language,MSIL) 程式碼;在啟動時間上產出較快的執行。 |
Singleline |
s |
指定單行模式。變更句號字元 (.) 的意義,使它符合一切字元 (而不是 \n 之外的一切字元)。 |
IgnorePatternWhitespace |
x |
指定未逸出的泛空白字元 (White Space) 是從模式中排除的,並且讓註解後面跟著數字符號 (#) (如需逸出的泛空白字元清單,請參閱逸出字元)。請注意,在字元類別內永遠不會將泛空白字元排除。 |
RightToLeft |
N/A |
指定搜尋是由右至左,而非由左至右。使用這個選項的規則運算式會移到起始位置的左邊,而非移向右邊 (因此,起始位置應該被指定為字串的結尾,而非字串的開頭)。這個選項無法在中途指定,以避免規則運算式產生無窮迴圈 (Loop) 的可能性。不過,Lookbehind 建構 (?<) 提供相似的選項,可用來做為子運算式 (Subexpression)。 RightToLeft 只會變更搜尋方向。不會反轉所搜尋的子字串。lookahead 和 lookbehind 判斷提示 (Assertion) 不會變更:Lookahead 會找尋右邊,Lookbehind 則找尋左邊。 |
ECMAScript |
N/A |
指定 ECMAScript 相容行為是為運算式啟用。這個選項只能配合 IgnoreCase 和 Multiline 旗標使用。將 ECMAScript 與任何其他旗標一起使用將導致例外狀況 (Exception)。 |
CultureInvariant |
N/A |
指定忽略語言中的文化特性差異。如需詳細資訊,請參閱在 RegularExpressions 命名空間中執行不區分文化特性作業。 |