DYF
我思故我在!

RegexCompilationInfo 类

提供编译器用于将正则表达式编译为独立程序集的信息。

属性

IsPublic:获取或设置一个值,该值指示所编译的正则表达式是否具有公共可见性。

Name:获取或设置用于所编译的正则表达式的类型名称。

Namespace:获取或设置要将新类型添加到的命名空间。

Options:获取或设置编译正则表达式时使用的编译器选项。

Pattern:获取或设置要编译的正则表达式。

方法

Equals:已重载。 确定两个 Object 实例是否相等。 (从 Object 继承。)

GetHashCode:用作特定类型的哈希函数。GetHashCode 适合在哈希算法和数据结构(如哈希表)中使用。 (从 Object 继承。)

GetType:获取当前实例的 Type。 (从 Object 继承。)

ReferenceEquals:确定指定的 Object 实例是否是相同的实例。 (从 Object 继承。)

ToString:返回表示当前 Object 的 String。 (从 Object 继承。)

示例

面的代码示例通过三个步骤定义、创建和使用编译过的正则表达式。

第一个步骤将编译下面的代码示例。代码示例中的 RegexCompilationInfo 构造函数准备了一个正则表达式以供编译

// This code example demonstrates the RegexCompilationInfo constructor
// and the Regex.CompileToAssembly() method.
// compile: csc genFishRegex.cs
 
namespace MyApp
{
    using System;
    using System.Reflection;
    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 类型对目标字符串进行匹配,并显示匹配项、组、捕获组以及匹配项在目标字符串中的索引位置。

// This code example demonstrates the RegexCompilationInfo constructor.
// Execute this code example after executing genFishRegex.exe.
// compile: csc /r:FishRegex.dll useFishRegex.cs
 
namespace MyApp
  {
  using System;
  using System.Reflection;
  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   
posted on 2010-08-14 09:34  o(∩_∩)o...  阅读(296)  评论(0编辑  收藏  举报