程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> .NET正則表達式的RegexOptions

.NET正則表達式的RegexOptions

編輯:關於.NET
.NET正則表達式在線匹配:
http://tool.hovertree.com/a/zz/

Compiled
指定將正則表達式編譯為程序集。這會產生更快的執行速度,但會增加啟動時間。在調用 CompileToAssembly 方法時,不應將此值分配給 Options 屬性。

CultureInvariant
指定忽略語言中的區域性差異。

ECMAScript
為表達式啟用符合 ECMAScript 的行為。該值只能與 IgnoreCase、Multiline 和 Compiled 值一起使用。該值與其他任何值一起使用均將導致異常。hovertree.com


ExplicitCapture
指定唯一有效的捕獲是顯式命名或編號的 (?<name>…) 形式的組。這使未命名的圓括號可以充當非捕獲組,並且不會使表達式的語法 (?:...) 顯得笨拙。

IgnoreCase
指定不區分大小寫的匹配。

IgnorePatternWhitespace
消除模式中的非轉義空白並啟用由 # 標記的注釋。但是,此值不影響或消除標記單獨的的開頭的、數值或令牌中的空白。何問起

Multiline
多行模式。更改 ^ 和 $ 的含義,使它們分別在任意一行的行首和行尾匹配,而不僅僅在整個字符串的開頭和結尾匹配。

None
指定不設置任何選項。

RightToLeft
指定搜索從右向左而不是從左向右進行。

Singleline
指定單行模式。更改點 (.) 的含義,以使它與每個字符(而不是除 \n 之外的所有字符)匹配。



在創建Regex類的實例時,構造函數的重載中有一個要求傳入RegexOptions的一個枚舉值,我相信這個枚舉一定非常有用,否則不會要求在構造函數中傳入。今天就來看一看這個枚舉的作用。

  我們干脆把代碼敲出來看一看:

// 摘要:
// 提供用於設置正則表達式選項的枚舉值。
[Flags]
public enum RegexOptions
{
// 摘要:
// 指定不設置選項。
None = 0,
//
// 摘要:
// 指定不區分大小寫的匹配。
IgnoreCase = 1,
//
// 摘要:
// 多行模式。更改 ^ 和 $ 的含義,使它們分別在任意一行的行首和行尾匹配,而不僅僅在整個字符串的開頭和結尾匹配。
Multiline = 2,
//
// 摘要:
// 指定有效的捕獲僅為形式為 (?<name>...) 的顯式命名或編號的組。這使未命名的圓括號可以充當非捕獲組,並且不會使表達式的語法 (?:...)
// 顯得笨拙。
ExplicitCapture = 4,
//
// 摘要:
// 指定將正則表達式編譯為程序集。這會產生更快的執行速度,但會增加啟動時間。在調用 System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[],System.Reflection.AssemblyName)
// 方法時,不應將此值分配給 System.Text.RegularExpressions.RegexCompilationInfo.Options
// 屬性。
Compiled = 8,
//
// 摘要:
// 指定單行模式。更改點 (.) 的含義,使它與每一個字符匹配(而不是與除 \n 之外的每個字符匹配)。
Singleline = 16,
//
// 摘要:
// 消除模式中的非轉義空白並啟用由 # 標記的注釋。但是,System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace
// 值不會影響或消除字符類中的空白。
IgnorePatternWhitespace = 32,
//
// 摘要:
// 指定搜索從右向左而不是從左向右進行。
RightToLeft = 64,
//
// 摘要:
// 為表達式啟用符合 ECMAScript 的行為。該值只能與 System.Text.RegularExpressions.RegexOptions.IgnoreCase、System.Text.RegularExpressions.RegexOptions.Multiline
// 和 System.Text.RegularExpressions.RegexOptions.Compiled 值一起使用。該值與其他任何值一起使用均將導致異常。
ECMAScript = 256,
//
// 摘要:
// 指定忽略語言中的區域性差異。有關更多信息,請參見 Performing Culture-Insensitive Operations in the
// RegularExpressions Namespace。
CultureInvariant = 512,
}


由代碼可以看出這是一個標志枚舉。

  其實把代碼復制出來之後,感覺也不是那麼難懂,都是一些基本的指示。


None = 0,     //指定不設置選項。

IgnoreCase = 1, //指定不區分大小寫的匹配。

Multiline = 2, //多行模式。更改 ^ 和 $ 的含義,使它們分別在任意一行的行首和行尾匹配,而不僅僅在整個字符串的開頭和結尾匹配。

ExplicitCapture = 4, //指定有效的捕獲僅為形式為 (?<name>...) 的顯式命名或編號的組。這使未命名的圓括號可以充當非捕獲組,並且不會使表達式的語法 (?:...)顯得笨拙。

Compiled = 8, //指定將正則表達式編譯為程序集。這會產生更快的執行速度,但會增加啟動時間。在調用 System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[],System.Reflection.AssemblyName)方法時,不應將此值分配給屬性。

Singleline = 16, //指定單行模式。更改點 (.) 的含義,使它與每一個字符匹配(而不是與除 \n 之外的每個字符匹配)。

IgnorePatternWhitespace = 32 //消除模式中的非轉義空白並啟用由 # 標記的注釋。但是,System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace值不會影            響或消除字符類中的空白。

RightToLeft = 64 //指定搜索從右向左而不是從左向右進行。

ECMAScript = 256, //為表達式啟用符合 ECMAScript 的行為。該值只能與 System.Text.RegularExpressions.RegexOptions.IgnoreCase、System.Text.RegularExpressions.RegexOptions.Multiline 和 System.Text.RegularExpressions.RegexOptions.Compiled 值一起使用。該值與其他任何值一起使用均將導致異常。

CultureInvariant = 512 //指定忽略語言中的區域性差異。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved