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