.NET中的正则表达式 (三)RegexCompilationInfo 类
RegexCompilationInfo 類
提供編譯器用于將正則表達式編譯為獨立程序集的信息。
屬性
IsPublic:獲取或設置一個值,該值指示所編譯的正則表達式是否具有公共可見性。
Name:獲取或設置用于所編譯的正則表達式的類型名稱。
Namespace:獲取或設置要將新類型添加到的命名空間。
Options:獲取或設置編譯正則表達式時使用的編譯器選項。
Pattern:獲取或設置要編譯的正則表達式。
方法
Equals:已重載。 確定兩個 Object 實例是否相等。 (從 Object 繼承。)
GetHashCode:用作特定類型的哈希函數。GetHashCode 適合在哈希算法和數據結構(如哈希表)中使用。 (從 Object 繼承。)
GetType:獲取當前實例的 Type。 (從 Object 繼承。)
ReferenceEquals:確定指定的 Object 實例是否是相同的實例。 (從 Object 繼承。)
ToString:返回表示當前 Object 的 String。 (從 Object 繼承。)
示例
面的代碼示例通過三個步驟定義、創建和使用編譯過的正則表達式。
第一個步驟將編譯下面的代碼示例。代碼示例中的 RegexCompilationInfo 構造函數準備了一個正則表達式以供編譯
| 1? | //?This?code?example?demonstrates?the?RegexCompilationInfo?constructor | 
| 2? | //?and?the?Regex.CompileToAssembly()?method. | 
| 3? | //?compile:?csc?genFishRegex.cs | 
| 4? | ? | 
| 5? | namespace?MyApp | 
| 6? | { | 
| 7? | ????using?System; | 
| 8? | ????using?System.Reflection; | 
| 9? | ????using?System.Text.RegularExpressions; | 
| 10? | ????class?GenFishRegEx | 
| 11? | ????{ | 
| 12? | ????????public?static?void?Main() | 
| 13? | ????????{ | 
| 14? | //?Pattern?=?Group?matches?one?or?more?word?characters,? | 
| 15? | //???????????one?or?more?white?space?characters,? | 
| 16? | //???????????group?matches?the?string?"fish". | 
| 17? | ????????string?pat?=?@"(/w+)/s+(fish)"; | 
| 18? | ? | 
| 19? | //?Create?the?compilation?information. | 
| 20? | //?Case-insensitive?matching;?type?name?=?"FishRegex";? | 
| 21? | //?namespace?=?"MyApp";?type?is?public. | 
| 22? | ????????RegexCompilationInfo?rci?=?new?RegexCompilationInfo( | 
| 23? | ????????????????????pat,?RegexOptions.IgnoreCase,? | 
| 24? | ????????????????????"FishRegex",?"MyApp",?true); | 
| 25? | ? | 
| 26? | //?Setup?to?compile. | 
| 27? | ????????AssemblyName?an?=?new?AssemblyName(); | 
| 28? | ????????an.Name?=?"FishRegex"; | 
| 29? | ????????RegexCompilationInfo[]?rciList?=?{?rci?}; | 
| 30? | ? | 
| 31? | //?Compile?the?regular?expression. | 
| 32? | ????????Regex.CompileToAssembly(rciList,?an); | 
| 33? | ????????} | 
| 34? | ????} | 
| 35? | } | 
| 36? | ? | 
| 37? | /* | 
| 38? | This?code?example?produces?the?following?results: | 
| 39? | ? | 
| 40? | (Execute?this?code?to?generate?the?compiled?regular? | 
| 41? | expression?assembly?named?FishRegex.dll. | 
| 42? | Use?FishRegex.dll?as?a?reference?when?compiling? | 
| 43? | useFishRegex.cs.) | 
| 44? | ? | 
| 45? | */ | 
| 46? | ? | 
第二步:運行第一個步驟中編譯的可執行文件。該可執行文件創建 FishRegex.dll 程序集以及一個名為 FishRegex 的編譯過的正則表達式類型。
第三步:使用對 FishRegex.dll 的引用編譯下面的代碼示例,然后運行得到的可執行文件。該可執行文件使用 FishRegex 類型對目標字符串進行匹配,并顯示匹配項、組、捕獲組以及匹配項在目標字符串中的索引位置。
| 1? | //?This?code?example?demonstrates?the?RegexCompilationInfo?constructor. | 
| 2? | //?Execute?this?code?example?after?executing?genFishRegex.exe. | 
| 3? | //?compile:?csc?/r:FishRegex.dll?useFishRegex.cs | 
| 4? | ? | 
| 5? | namespace?MyApp | 
| 6? | ??{ | 
| 7? | ??using?System; | 
| 8? | ??using?System.Reflection; | 
| 9? | ??using?System.Text.RegularExpressions; | 
| 10? | ? | 
| 11? | ??class?UseFishRegEx | 
| 12? | ????{ | 
| 13? | ????public?static?void?Main() | 
| 14? | ??????{ | 
| 15? | //?Match?against?the?following?target?string. | 
| 16? | ??????string?targetString?=?"One?fish?two?fish?red?fish?blue?fish"; | 
| 17? | ??????int?matchCount?=?0; | 
| 18? | ??????FishRegex?f?=?new?FishRegex(); | 
| 19? | ? | 
| 20? | //?Display?the?target?string. | 
| 21? | ??????Console.WriteLine("/nInput?string?=?/""?+?targetString?+?"/""); | 
| 22? | ? | 
| 23? | //?Display?each?match,?capture?group,?capture,?and?match?position. | 
| 24? | ??????foreach?(Match?m?in?f.Matches(targetString)) | 
| 25? | ????{ | 
| 26? | ????Console.WriteLine("/nMatch("?+?(++matchCount)?+?")"); | 
| 27? | ????for?(int?i?=?1;?i?<=?2;?i++) | 
| 28? | ??????{ | 
| 29? | ??????Group?g?=?m.Groups[i]; | 
| 30? | ??????Console.WriteLine("Group("?+?i?+?")?=?/""?+?g?+?"/""); | 
| 31? | ??????CaptureCollection?cc?=?g.Captures; | 
| 32? | ??????for?(int?j?=?0;?j?<?cc.Count;?j++) | 
| 33? | ????????{ | 
| 34? | ????????Capture?c?=?cc[j]; | 
| 35? | ????????System.Console.WriteLine( | 
| 36? | ??????????"Capture("?+?j?+?")?=?/""?+?c?+?"/",?Position?=?"?+?c.Index); | 
| 37? | ????????} | 
| 38? | ??????} | 
| 39? | ????} | 
| 40? | ??????} | 
| 41? | ????} | 
| 42? | ??} | 
| 43? | ? | 
| 44? | /* | 
| 45? | This?code?example?produces?the?following?results: | 
| 46? | ? | 
| 47? | Input?string?=?"One?fish?two?fish?red?fish?blue?fish" | 
| 48? | ? | 
| 49? | Match(1) | 
| 50? | Group(1)?=?"One" | 
| 51? | Capture(0)?=?"One",?Position?=?0 | 
| 52? | Group(2)?=?"fish" | 
| 53? | Capture(0)?=?"fish",?Position?=?4 | 
| 54? | ? | 
| 55? | Match(2) | 
| 56? | Group(1)?=?"two" | 
| 57? | Capture(0)?=?"two",?Position?=?9 | 
| 58? | Group(2)?=?"fish" | 
| 59? | Capture(0)?=?"fish",?Position?=?13 | 
| 60? | ? | 
| 61? | Match(3) | 
| 62? | Group(1)?=?"red" | 
| 63? | Capture(0)?=?"red",?Position?=?18 | 
| 64? | Group(2)?=?"fish" | 
| 65? | Capture(0)?=?"fish",?Position?=?22 | 
| 66? | ? | 
| 67? | Match(4) | 
| 68? | Group(1)?=?"blue" | 
| 69? | Capture(0)?=?"blue",?Position?=?27 | 
| 70? | Group(2)?=?"fish" | 
| 71? | Capture(0)?=?"fish",?Position?=?32 | 
| 72? | ? | 
| 73? | */ | 
| 74? | ? | 
轉載于:https://www.cnblogs.com/dyufei/archive/2010/08/14/2573922.html
總結
以上是生活随笔為你收集整理的.NET中的正则表达式 (三)RegexCompilationInfo 类的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 丰田首款电动车出师不利:车轮脱落、紧急召
- 下一篇: 5nm Zen 4要正式登场!AMD锐龙
