RegexCompilationInfo Конструкторы

Определение

Инициализирует новый экземпляр класса RegexCompilationInfo.Initializes a new instance of the RegexCompilationInfo class.

Перегрузки

RegexCompilationInfo(String, RegexOptions, String, String, Boolean)

Инициализирует новый экземпляр класса RegexCompilationInfo, содержащего сведения о регулярном выражении, которое должно быть включено в сборку.Initializes a new instance of the RegexCompilationInfo class that contains information about a regular expression to be included in an assembly.

RegexCompilationInfo(String, RegexOptions, String, String, Boolean, TimeSpan)

Инициализирует новый экземпляр класса RegexCompilationInfo, содержащего сведения о регулярном выражении с указанным значение времени ожидания, которое должно быть включено в сборку.Initializes a new instance of the RegexCompilationInfo class that contains information about a regular expression with a specified time-out value to be included in an assembly.

RegexCompilationInfo(String, RegexOptions, String, String, Boolean)

Инициализирует новый экземпляр класса RegexCompilationInfo, содержащего сведения о регулярном выражении, которое должно быть включено в сборку.Initializes a new instance of the RegexCompilationInfo class that contains information about a regular expression to be included in an assembly.

public:
 RegexCompilationInfo(System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options, System::String ^ name, System::String ^ fullnamespace, bool ispublic);
public RegexCompilationInfo (string pattern, System.Text.RegularExpressions.RegexOptions options, string name, string fullnamespace, bool ispublic);
new System.Text.RegularExpressions.RegexCompilationInfo : string * System.Text.RegularExpressions.RegexOptions * string * string * bool -> System.Text.RegularExpressions.RegexCompilationInfo
Public Sub New (pattern As String, options As RegexOptions, name As String, fullnamespace As String, ispublic As Boolean)

Параметры

pattern
String

Регулярное выражение для компилирования.The regular expression to compile.

options
RegexOptions

Параметры регулярного выражения для использования при компилировании регулярного выражения.The regular expression options to use when compiling the regular expression.

name
String

Имя типа, представляющего скомпилированное регулярное выражение.The name of the type that represents the compiled regular expression.

fullnamespace
String

Пространство имен, к которому принадлежит новый тип.The namespace to which the new type belongs.

ispublic
Boolean

Значение true, чтобы сделать скомпилированное регулярное выражение видимым для всех, иначе значение false.true to make the compiled regular expression publicly visible; otherwise, false.

Исключения

Свойство name имеет значение Empty.name is Empty.

patternnull.pattern is null.

- или --or- namenull.name is null.

- или --or- fullnamespacenull.fullnamespace is null.

Примеры

В следующем примере создается и используется скомпилированное регулярное выражение в двух шагах.The following example creates and uses a compiled regular expression in two steps.

На первом шаге Скомпилируйте и выполните следующий пример кода.In the first step, compile and execute the following code example. RegexCompilationInfo Конструктор в примере кода определяет скомпилированное регулярное выражение.The RegexCompilationInfo constructor in the code example defines a compiled regular expression. Результатом выполнения кода является сборка с именем Фишрежекс. dll, которая содержит скомпилированный тип регулярного выражения с именем FishRegex.The result of executing the code is an assembly named FishRegex.dll that contains a compiled regular expression type named FishRegex.

// 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;
    class GenFishRegEx
    {
        public static void Main()
        {
// Pattern = Group matches one or more word characters, 
//           one or more white space characters, 
//           group matches the string "fish".
        string pat = @"(\w+)\s+(fish)";

// Create the compilation information.
// Case-insensitive matching; type name = "FishRegex"; 
// namespace = "MyApp"; type is public.
        RegexCompilationInfo rci = new RegexCompilationInfo(
                    pat, RegexOptions.IgnoreCase, 
                    "FishRegex", "MyApp", true);

// Setup to compile.
        AssemblyName an = new AssemblyName();
        an.Name = "FishRegex";
        RegexCompilationInfo[] rciList = { rci };

// Compile the regular expression.
        Regex.CompileToAssembly(rciList, an);
        }
    }
}
' This code example demonstrates the RegexCompilationInfo constructor
' and the Regex.CompileToAssembly() method.
' compile: csc genFishRegex.cs

Imports System.Reflection
Imports System.Text.RegularExpressions

Class GenFishRegEx
    Public Shared Sub Main() 
        ' Pattern = Group matches one or more word characters, 
        '           one or more white space characters, 
        '           group matches the string "fish".
        Dim pat As String = "(\w+)\s+(fish)"
        
        ' Create the compilation information.
        ' Case-insensitive matching; type name = "FishRegex"; 
        ' namespace = "MyApp"; type is public.
        Dim rci As New RegexCompilationInfo(pat, RegexOptions.IgnoreCase, _
                                            "FishRegex", "MyApp", True)
        
        ' Setup to compile.
        Dim an As New AssemblyName()
        an.Name = "FishRegex"
        Dim rciList As RegexCompilationInfo() = New RegexCompilationInfo() { rci }
        
        ' Compile the regular expression.
        Regex.CompileToAssembly(rciList, an)
    
    End Sub
End Class

На втором шаге скомпилируйте следующий пример кода, используя ссылку на Фишрежекс. dll, а затем запустите полученный исполняемый файл.In the second step, compile the following code example using a reference to FishRegex.dll, and then run the resulting executable file. Исполняемый файл соответствует целевой строке с помощью FishRegex типа и отображает соответствие, группу, группу захвата и индекс соответствия в целевой строке.The executable file matches a target string by using the FishRegex type, and displays the match, group, capture group, and index position of the matches in the target string.

// 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;

  class UseFishRegEx
    {
    public static void Main()
      {
// Match against the following target string.
      string targetString = "One fish two fish red fish blue fish";
      int matchCount = 0;
      FishRegex f = new FishRegex();

// Display the target string.
      Console.WriteLine("\nInput string = \"" + targetString + "\"");

// Display each match, capture group, capture, and match position.
      foreach (Match m in f.Matches(targetString))
    {
    Console.WriteLine("\nMatch(" + (++matchCount) + ")");
    for (int i = 1; i <= 2; i++)
      {
      Group g = m.Groups[i];
      Console.WriteLine("Group(" + i + ") = \"" + g + "\"");
      CaptureCollection cc = g.Captures;
      for (int j = 0; j < cc.Count; j++)
        {
        Capture c = cc[j];
        System.Console.WriteLine(
          "Capture(" + j + ") = \"" + c + "\", Position = " + c.Index);
        }
      }
    }
      }
    }
  }

/*
This code example produces the following results:

Input string = "One fish two fish red fish blue fish"

Match(1)
Group(1) = "One"
Capture(0) = "One", Position = 0
Group(2) = "fish"
Capture(0) = "fish", Position = 4

Match(2)
Group(1) = "two"
Capture(0) = "two", Position = 9
Group(2) = "fish"
Capture(0) = "fish", Position = 13

Match(3)
Group(1) = "red"
Capture(0) = "red", Position = 18
Group(2) = "fish"
Capture(0) = "fish", Position = 22

Match(4)
Group(1) = "blue"
Capture(0) = "blue", Position = 27
Group(2) = "fish"
Capture(0) = "fish", Position = 32

*/
' This code example demonstrates the RegexCompilationInfo constructor.
' Execute this code example after executing genFishRegex.exe.
' compile: vbc /r:FishRegex.dll useFishRegex.vb

Imports System.Reflection
Imports System.Text.RegularExpressions

Class UseFishRegEx
    Public Shared Sub Main() 
        ' Match against the following target string.
        Dim targetString As String = "One fish two fish red fish blue fish"
        Dim matchCount As Integer = 0
        Dim f As New MyApp.FishRegex()
        
        ' Display the target string.
        Console.WriteLine(vbLf & "Input string = """ & targetString & """")
        
        ' Display each match, capture group, capture, and match position.
        Dim m As Match
        For Each m In f.Matches(targetString)
            matchCount = matchCount + 1
            Console.WriteLine(vbLf & "Match(" & matchCount & ")")

            Dim i As Integer
            For i = 1 to 2
                Dim g As Group = m.Groups(i)
                Console.WriteLine("Group(" & i & ") = """ & g.ToString() & """")
                Dim cc As CaptureCollection = g.Captures
                Dim j As Integer
                For j = 0 To cc.Count-1
                    Dim c As Capture = cc(j)
                    System.Console.WriteLine("Capture(" & j & ") = """ & c.ToString() & _
                                             """, Position = " & c.Index)
                Next j
            Next i
        Next m
    End Sub
End Class

'
'This code example produces the following results:
'
'Input string = "One fish two fish red fish blue fish"
'
'Match(1)
'Group(1) = "One"
'Capture(0) = "One", Position = 0
'Group(2) = "fish"
'Capture(0) = "fish", Position = 4
'
'Match(2)
'Group(1) = "two"
'Capture(0) = "two", Position = 9
'Group(2) = "fish"
'Capture(0) = "fish", Position = 13
'
'Match(3)
'Group(1) = "red"
'Capture(0) = "red", Position = 18
'Group(2) = "fish"
'Capture(0) = "fish", Position = 22
'
'Match(4)
'Group(1) = "blue"
'Capture(0) = "blue", Position = 27
'Group(2) = "fish"
'Capture(0) = "fish", Position = 32
'

Комментарии

Каждый параметр RegexCompilationInfo(String, RegexOptions, String, String, Boolean) конструктора непосредственно соответствует свойству RegexCompilationInfo класса.Each parameter of the RegexCompilationInfo(String, RegexOptions, String, String, Boolean) constructor directly corresponds to a property of the RegexCompilationInfo class. Так как все свойства доступны для чтения и записи, их значения также можно назначать напрямую.Because all properties are read/write, their values can also be assigned directly.

CompileToAssembly Метод создает сборку, содержащую скомпилированные регулярные выражения.The CompileToAssembly method generates an assembly that contains compiled regular expressions. Поэтому не следует указывать Compiled в качестве одного из optionsзначений.Therefore, you should not specify Compiled as one of the values of options.

Если ispublic имеет trueзначение, то скомпилированному классу регулярного выражения предоставляется открытый доступ.If ispublic is true, the compiled regular expression class is given public accessibility. Это значит, что экземпляр можно создать из кода, который выполняется в любой сборке.That is, it can be instantiated from code that executes in any assembly. Если ispublic имеет falseзначение, то скомпилированному классу регулярного выражения C#присваивается Friend internal (in) или (в Visual Basic) доступность.If ispublic is false, the compiled regular expression class is given internal (in C#) or Friend (in Visual Basic) accessibility. Таким образом, его можно создать только из кода, который выполняется в той же сборке, что и класс регулярного выражения.That is, it can be instantiated only from code that executes in the same assembly as the regular expression class.

Примечания для тех, кто вызывает этот метод

Этот конструктор создает скомпилированное регулярное выражение, которое использует значение времени ожидания по умолчанию для домена приложения, в котором он создан.This constructor creates a compiled regular expression that uses the default time-out value of the application domain in which it is created. Если для домена приложения определено значение времени ожидания, то в скомпилированном регулярном выражении используется значение InfiniteMatchTimeout, которое предотвращает истечение времени ожидания операции сопоставления шаблона. Для создания скомпилированного регулярного выражения RegexCompilationInfo(String, RegexOptions, String, String, Boolean, TimeSpan)рекомендуется использовать конструктор, который позволяет задать интервал времени ожидания.If a time-out value is defined for the application domain, the compiled regular expression uses the value InfiniteMatchTimeout, which prevents a pattern-matching operation from timing out. The recommended constructor for creating a compiled regular expression is RegexCompilationInfo(String, RegexOptions, String, String, Boolean, TimeSpan), which lets you set the time-out interval.

RegexCompilationInfo(String, RegexOptions, String, String, Boolean, TimeSpan)

Инициализирует новый экземпляр класса RegexCompilationInfo, содержащего сведения о регулярном выражении с указанным значение времени ожидания, которое должно быть включено в сборку.Initializes a new instance of the RegexCompilationInfo class that contains information about a regular expression with a specified time-out value to be included in an assembly.

public:
 RegexCompilationInfo(System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options, System::String ^ name, System::String ^ fullnamespace, bool ispublic, TimeSpan matchTimeout);
public RegexCompilationInfo (string pattern, System.Text.RegularExpressions.RegexOptions options, string name, string fullnamespace, bool ispublic, TimeSpan matchTimeout);
new System.Text.RegularExpressions.RegexCompilationInfo : string * System.Text.RegularExpressions.RegexOptions * string * string * bool * TimeSpan -> System.Text.RegularExpressions.RegexCompilationInfo
Public Sub New (pattern As String, options As RegexOptions, name As String, fullnamespace As String, ispublic As Boolean, matchTimeout As TimeSpan)

Параметры

pattern
String

Регулярное выражение для компилирования.The regular expression to compile.

options
RegexOptions

Параметры регулярного выражения для использования при компилировании регулярного выражения.The regular expression options to use when compiling the regular expression.

name
String

Имя типа, представляющего скомпилированное регулярное выражение.The name of the type that represents the compiled regular expression.

fullnamespace
String

Пространство имен, к которому принадлежит новый тип.The namespace to which the new type belongs.

ispublic
Boolean

Значение true, чтобы сделать скомпилированное регулярное выражение видимым для всех, иначе значение false.true to make the compiled regular expression publicly visible; otherwise, false.

matchTimeout
TimeSpan

Интервал времени ожидания по умолчанию для регулярного выражения.The default time-out interval for the regular expression.

Исключения

nameEmpty.name is Empty.

patternnull.pattern is null.

- или --or- Свойство name имеет значение null.name is null.

- или --or- Свойство fullnamespace имеет значение null.fullnamespace is null.

Значение параметра matchTimeout отрицательное, равно нулю или больше, чем приблизительно 24 дня.matchTimeout is negative, zero, or greater than approximately 24 days.

Примеры

В следующем примере определяется одно скомпилированное регулярное выражение DuplicateChars с именем, которое определяет два или более вхождений одного и того же символа во входной строке.The following example defines a single compiled regular expression named DuplicateChars that identifies two or more occurrences of the same character in an input string. Время ожидания скомпилированного регулярного выражения по умолчанию составляет 2 секунды.The compiled regular expression has a default time-out of 2 seconds. При выполнении этого примера создается библиотека классов с именем Режекслиб. dll, которая содержит скомпилированное регулярное выражение.When you execute the example, it creates a class library named RegexLib.dll that contains the compiled regular expression.

using System;
using System.Reflection;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
        // Match two or more occurrences of the same character.
        string pattern = @"(\w)\1+";
        
        // Use case-insensitive matching. 
        var rci = new RegexCompilationInfo(pattern, RegexOptions.IgnoreCase,
                                           "DuplicateChars", "CustomRegexes", 
                                           true, TimeSpan.FromSeconds(2));

        // Define an assembly to contain the compiled regular expression.
        var an = new AssemblyName();
        an.Name = "RegexLib";
        RegexCompilationInfo[] rciList = { rci };

        // Compile the regular expression and create the assembly.
        Regex.CompileToAssembly(rciList, an);
   }
}
Imports System.Reflection
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
        ' Match two or more occurrences of the same character.
        Dim pattern As String = "(\w)\1+"
        
        ' Use case-insensitive matching. 
        Dim rci As New RegexCompilationInfo(pattern, RegexOptions.IgnoreCase,
                                            "DuplicateChars", "CustomRegexes", 
                                            True, TimeSpan.FromSeconds(2))

        ' Define an assembly to contain the compiled regular expression.
        Dim an As New AssemblyName()
        an.Name = "RegexLib"
        Dim rciList As RegexCompilationInfo() = New RegexCompilationInfo() { rci }

        ' Compile the regular expression and create the assembly.
        Regex.CompileToAssembly(rciList, an)
   End Sub
End Module

Шаблон регулярного выражения (\w)\1+ определяется, как показано в следующей таблице.The regular expression pattern (\w)\1+ is defined as shown in the following table.

ШаблонPattern ОписаниеDescription
(\w) Совпадение с любым символом слова и назначение его первой захваченной группе.Match any word character and assign it to the first capturing group.
\1+ Совпадение с одним или несколькими вхождениями значения первой захваченной группы.Match one or more occurrences of the value of the first captured group.

В следующем примере DuplicatedChars регулярное выражение используется для обнаружения повторяющихся символов в массиве строк.The following example uses the DuplicatedChars regular expression to identify duplicate characters in a string array. При вызове DuplicatedChars конструктора он изменяет интервал времени ожидания на. 5 секунд.When it calls the DuplicatedChars constructor, it changes the time-out interval to .5 seconds.

using CustomRegexes;
using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      var rgx = new DuplicateChars(TimeSpan.FromSeconds(.5));
      
      string[] values = { "Greeeeeat", "seed", "deed", "beam", 
                          "loop", "Aardvark" };
      // Display regex information.
      Console.WriteLine("Regular Expression Pattern: {0}", rgx);
      Console.WriteLine("Regex timeout value: {0} seconds\n", 
                        rgx.MatchTimeout.TotalSeconds);
      
      // Display matching information.
      foreach (var value in values) {
         Match m = rgx.Match(value);
         if (m.Success)
            Console.WriteLine("'{0}' found in '{1}' at positions {2}-{3}",
                              m.Value, value, m.Index, m.Index + m.Length - 1);
         else
            Console.WriteLine("No match found in '{0}'", value);
      }                                                         
   }
}
// The example displays the following output:
//       Regular Expression Pattern: (\w)\1+
//       Regex timeout value: 0.5 seconds
//       
//       //eeeee// found in //Greeeeeat// at positions 2-6
//       //ee// found in //seed// at positions 1-2
//       //ee// found in //deed// at positions 1-2
//       No match found in //beam//
//       //oo// found in //loop// at positions 1-2
//       //Aa// found in //Aardvark// at positions 0-1
Imports CustomRegexes
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim rgx As New DuplicateChars(TimeSpan.FromSeconds(.5))
      
      Dim values() As String = { "Greeeeeat", "seed", "deed", "beam", 
                                 "loop", "Aardvark" }
      ' Display regex information.
      Console.WriteLine("Regular Expression Pattern: {0}", rgx)
      Console.WriteLine("Regex timeout value: {0} seconds", 
                        rgx.MatchTimeout.TotalSeconds)
      Console.WriteLine()
      
      ' Display matching information.
      For Each value In values
         Dim m As Match = rgx.Match(value)
         If m.Success Then
            Console.WriteLine("'{0}' found in '{1}' at positions {2}-{3}",
                              m.Value, value, m.Index, m.Index + m.Length - 1)
         Else
            Console.WriteLine("No match found in '{0}'", value)
         End If   
      Next                                                         
   End Sub
End Module
' The example displays the following output:
'       Regular Expression Pattern: (\w)\1+
'       Regex timeout value: 0.5 seconds
'       
'       'eeeee' found in 'Greeeeeat' at positions 2-6
'       'ee' found in 'seed' at positions 1-2
'       'ee' found in 'deed' at positions 1-2
'       No match found in 'beam'
'       'oo' found in 'loop' at positions 1-2
'       'Aa' found in 'Aardvark' at positions 0-1

Комментарии

Каждый параметр RegexCompilationInfo(String, RegexOptions, String, String, Boolean) конструктора непосредственно соответствует свойству RegexCompilationInfo класса.Each parameter of the RegexCompilationInfo(String, RegexOptions, String, String, Boolean) constructor directly corresponds to a property of the RegexCompilationInfo class. Так как все свойства доступны для чтения и записи, их значения также можно назначать напрямую.Because all properties are read/write, their values can also be assigned directly.

CompileToAssembly Метод создает сборку, содержащую скомпилированные регулярные выражения.The CompileToAssembly method generates an assembly that contains compiled regular expressions. Поэтому не следует указывать Compiled в качестве одного из optionsзначений.Therefore, you should not specify Compiled as one of the values of options.

Если ispublic имеет trueзначение, то скомпилированному классу регулярного выражения предоставляется открытый доступ.If ispublic is true, the compiled regular expression class is given public accessibility. Это значит, что экземпляр можно создать из кода, который выполняется в любой сборке.That is, it can be instantiated from code that executes in any assembly. Если ispublic имеет falseзначение, то скомпилированному классу регулярного выражения C#присваивается Friend internal (in) или (в Visual Basic) доступность.If ispublic is false, the compiled regular expression class is given internal (in C#) or Friend (in Visual Basic) accessibility. Таким образом, его можно создать только из кода, который выполняется в той же сборке, что и класс регулярного выражения.That is, it can be instantiated only from code that executes in the same assembly as the regular expression class.

matchTimeout Параметр определяет интервал времени ожидания по умолчанию для скомпилированного регулярного выражения.The matchTimeout parameter defines the default time-out interval for the compiled regular expression. Это значение представляет приблизительный промежуток времени, в течение которого скомпилированный объект регулярного выражения будет выполнять одну операцию сопоставления до истечения времени ожидания операции, и обработчик RegexMatchTimeoutException регулярных выражений выдаст исключение во время следующей проверки времени. .This value represents the approximate amount of time that a compiled regular expression object will execute a single matching operation before the operation times out and the regular expression engine throws a RegexMatchTimeoutException exception during its next timing check. Дополнительные сведения о значении времени ожидания см. в MatchTimeout описании свойства.For additional information about the time-out value, see the MatchTimeout property.

Важно!

Рекомендуется всегда устанавливать значение времени ожидания по умолчанию для скомпилированного регулярного выражения.We recommend that you always set a default time-out value for a compiled regular expression. Потребители библиотеки регулярных выражений могут переопределить это значение времени ожидания, передав TimeSpan значение, представляющее новый интервал времени ожидания, в эту перегрузку конструктора.Consumers of your regular expression library can override that time-out value by passing a TimeSpan value that represents the new time-out interval to this constructor overload.

Дополнительно

Применяется к