RegexOptions Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет перечисленные значения для задания параметров регулярного выражения.
Это перечисление поддерживает побитовую комбинацию значений его членов.
public enum class RegexOptions
[System.Flags]
public enum RegexOptions
[<System.Flags>]
type RegexOptions =
Public Enum 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 класса:
Regex.Regex(String, RegexOptions) Конструктор класса.
Методы Regex.Replace(String, String, String, RegexOptions) и Regex.Replace(String, String, MatchEvaluator, RegexOptions) методы.
Значение RegexOptions также можно указать в качестве параметра конструктору RegexCompilationInfo или его можно назначить непосредственно свойству RegexCompilationInfo.Options . Результирующий RegexCompilationInfo объект затем используется в вызове Regex.CompileToAssembly метода.
Вместо этого можно предоставить несколько вариантов, предоставляемых элементами RegexOptions перечисления (в частности, его ExplicitCapture, IgnoreCaseMultilineи Singleline членами) с помощью встроенного символа параметра в шаблоне регулярного выражения. Дополнительные сведения см. в разделе "Параметры регулярного выражения".