Поделиться через


RegexOptions Перечисление

Определение

Предоставляет перечисленные значения для использования при задании параметров регулярных выражений.

Это перечисление поддерживает побитовую комбинацию значений его членов.

public enum class RegexOptions
[System.Flags]
public enum RegexOptions
[<System.Flags>]
type RegexOptions = 
Public Enum RegexOptions
Наследование
RegexOptions
Атрибуты

Поля

Compiled 8

Указывает, что регулярное выражение компилируется в код MSIL, а не интерпретируется. Скомпилированные регулярные выражения повышают производительность во время выполнения, но за счет более длительной инициализации. Это значение не должно назначаться свойству Options при обращении к методу CompileToAssembly(RegexCompilationInfo[], AssemblyName). Дополнительные сведения см. в разделе "Скомпилированные регулярные выражения" статьи Параметры регулярных выражений.

CultureInvariant 512

Указывает игнорирование региональных языковых различий. Дополнительные сведения см. в разделе "Сравнение с использованием инвариантного языка и региональных параметров" статьи Параметры регулярных выражений.

ECMAScript 256

Включает ECMAScript-совместимое поведение для выражения. Это значение может быть использовано только вместе со значениями IgnoreCase, Multiline и Compiled. Использование этого значения вместе с любыми другими приводит к исключению.

Дополнительные сведения о параметре ECMAScript см. в разделе "Поведение сопоставления ECMAScript" статьи Параметры регулярных выражений.

ExplicitCapture 4

Указывает, что единственные допустимые записи являются явно именованными или нумерованными группами в форме (?<name>...). Это позволяет использовать неименованные круглые скобки в качестве незахватываемых групп, тем самым не допуская синтаксической громоздкости выражения (?:...). Дополнительные сведения см. в разделе "Только явные захваты" статьи Параметры регулярных выражений.

IgnoreCase 1

Указывает соответствие, не учитывающее регистр. Дополнительные сведения см. в разделе "Сопоставление без учета регистра" статьи Параметры регулярных выражений.

IgnorePatternWhitespace 32

Устраняет из шаблона разделительные символы без escape-последовательности и включает комментарии, помеченные символом "#". Однако это значение не затрагивает и не устраняет пробелы в классах символов, числовых квантификаторах или токенах, отмечающих начало отдельных языковых элементов регулярных выражений. Дополнительные сведения см. в разделе "Пропуск пробелов" статьи Параметры регулярных выражений.

Multiline 2

Многострочный режим. Изменяет значение символов "^" и "$" так, что они совпадают, соответственно, в начале и конце любой строки, а не только в начале и конце целой строки. Дополнительные сведения см. в разделе "Многострочный режим" статьи Параметры регулярных выражений.

NonBacktracking 1024

Включите сопоставление с помощью подхода, который позволяет избежать обратного отслеживания и гарантирует линейную обработку длины входных данных.

None 0

Указывает на отсутствие заданных параметров. Дополнительные сведения о поведении по умолчанию обработчика регулярных выражений см. в разделе "Параметры по умолчанию" статьи Параметры регулярных выражений.

RightToLeft 64

Указывает, что поиск будет выполнен в направлении справа налево, а не слева направо. Дополнительные сведения см. в разделе "Режим справа налево" статьи Параметры регулярных выражений.

Singleline 16

Указывает однострочный режим. Изменяет значение точки (.) так, что она соответствует любому символу (вместо любого символа, кроме "\n"). Дополнительные сведения см. в разделе "Однострочный режим" статьи Параметры регулярных выражений.

Примеры

В следующем примере определяются два регулярных выражения, которые идентифицируют повторяющиеся слова в тексте, но создаются с использованием разных RegexOptions значений. Первое регулярное выражение не учитывает регистр; регистр игнорируется при определении того, идентично ли слово предыдущему слову. Второе регулярное выражение учитывает регистр; Слово должно точно соответствовать регистру предыдущего слова, чтобы считаться дубликатом.

using System;
using System.Text.RegularExpressions;

public class Test
{
    public static void Main ()
    {
        // Define a case-insensitive regular expression for repeated words.
        Regex rxInsensitive = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b",
          RegexOptions.Compiled | RegexOptions.IgnoreCase);
        // Define a case-sensitive regular expression for repeated words.
        Regex rxSensitive = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b",
          RegexOptions.Compiled);

        // Define a test string.        
        string text = "The the quick brown fox  fox jumps over the lazy dog dog.";
        
        // Find matches using case-insensitive regular expression.
        MatchCollection matches = rxInsensitive.Matches(text);

        // Report the number of matches found.
        Console.WriteLine("{0} matches found in:\n   {1}", 
                          matches.Count, 
                          text);

        // Report on each match.
        foreach (Match match in matches)
        {
            GroupCollection groups = match.Groups;
            Console.WriteLine("'{0}' repeated at positions {1} and {2}",  
                              groups["word"].Value, 
                              groups[0].Index, 
                              groups[1].Index);
        }
        Console.WriteLine();
        
        // Find matches using case-sensitive regular expression.
        matches = rxSensitive.Matches(text);

        // Report the number of matches found.
        Console.WriteLine("{0} matches found in:\n   {1}", 
                          matches.Count, 
                          text);

        // Report on each match.
        foreach (Match match in matches)
        {
            GroupCollection groups = match.Groups;
            Console.WriteLine("'{0}' repeated at positions {1} and {2}",  
                              groups["word"].Value, 
                              groups[0].Index, 
                              groups[1].Index);
        }
    }
}
// The example produces the following output to the console:
//       3 matches found in:
//          The the quick brown fox  fox jumps over the lazy dog dog.
//       'The' repeated at positions 0 and 4
//       'fox' repeated at positions 20 and 25
//       'dog' repeated at positions 50 and 54
//       
//       2 matches found in:
//          The the quick brown fox  fox jumps over the lazy dog dog.
//       'fox' repeated at positions 20 and 25
//       'dog' repeated at positions 50 and 54
Imports System.Text.RegularExpressions

Public Module Test

    Public Sub Main()
        ' Define a case-insensitive regular expression for repeated words.
        Dim rxInsensitive As New Regex("\b(?<word>\w+)\s+(\k<word>)\b", _
               RegexOptions.Compiled Or RegexOptions.IgnoreCase)
        ' Define a case-sensitive regular expression for repeated words.
        Dim rxSensitive As New Regex("\b(?<word>\w+)\s+(\k<word>)\b", _
               RegexOptions.Compiled)

        ' Define a test string.        
        Dim text As String = "The the quick brown fox  fox jumps over the lazy dog dog."
        
        ' Find matches using case-insensitive regular expression.
        Dim matches As MatchCollection = rxInsensitive.Matches(text)

        ' Report the number of matches found.
        Console.WriteLine("{0} matches found in:", matches.Count)
        Console.WriteLine("   {0}", text)

        ' Report on each match.
        For Each match As Match In matches
            Dim groups As GroupCollection = match.Groups
            Console.WriteLine("'{0}' repeated at positions {1} and {2}", _ 
                              groups.Item("word").Value, _
                              groups.Item(0).Index, _
                              groups.Item(1).Index)
        Next
        Console.WriteLine()
        
        ' Find matches using case-sensitive regular expression.
        matches = rxSensitive.Matches(text)

        ' Report the number of matches found.
        Console.WriteLine("{0} matches found in:", matches.Count)
        Console.WriteLine("   {0}", text)

        ' Report on each match.
        For Each match As Match In matches
            Dim groups As GroupCollection = match.Groups
            Console.WriteLine("'{0}' repeated at positions {1} and {2}", _ 
                              groups.Item("word").Value, _
                              groups.Item(0).Index, _
                              groups.Item(1).Index)
        Next
        Console.WriteLine()
    End Sub
End Module
' The example produces the following output to the console:
'       3 matches found in:
'          The the quick brown fox  fox jumps over the lazy dog dog.
'       'The' repeated at positions 0 and 4
'       'fox' repeated at positions 20 and 25
'       'dog' repeated at positions 50 and 54
'       
'       2 matches found in:
'          The the quick brown fox  fox jumps over the lazy dog dog.
'       'fox' repeated at positions 20 and 25
'       'dog' repeated at positions 50 and 54

Комментарии

Значение RegexOptions может быть предоставлено в качестве параметра для следующих членов Regex класса :

Значение RegexOptions также можно предоставить конструктору RegexCompilationInfo в качестве параметра или назначить его непосредственно свойству RegexCompilationInfo.Options . Затем результирующий RegexCompilationInfo объект используется в вызове Regex.CompileToAssembly метода .

Несколько параметров, предоставляемых RegexOptions элементами перечисления (в частности, его ExplicitCaptureэлементами , IgnoreCase, Multilineи Singleline ), можно вместо этого предоставить с помощью символа встроенного параметра в шаблоне регулярного выражения. Дополнительные сведения см. в разделе Параметры регулярных выражений.

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

См. также раздел