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


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

Определение

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

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

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

Поля

Имя Значение Описание
None 0

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

IgnoreCase 1

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

Multiline 2

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

ExplicitCapture 4

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

Compiled 8

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

Singleline 16

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

IgnorePatternWhitespace 32

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

RightToLeft 64

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

ECMAScript 256

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

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

CultureInvariant 512

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

NonBacktracking 1024

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

Примеры

В следующем примере определяются два регулярных выражения, которые определяют повторяющиеся слова в тексте, но создаются с использованием различных 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, IgnoreCaseMultilineи Singleline членами) с помощью встроенного символа параметра в шаблоне регулярного выражения. Дополнительные сведения см. в разделе "Параметры регулярного выражения".

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

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