NonBacktracking
RegexOptions.NonBacktracking доступен
начиная с .NET 7. Движок не использует
классический откат, поэтому время работы
ограничено. Флаг не сочетают с обратными
ссылками и частью lookaround - в примерах
достаточно простого \d+.
Синтаксис
new Regex(@"\d+", RegexOptions.NonBacktracking);
Пример
Давайте найти цифры в "abcde12345":
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
var re = new Regex(@"\d+", RegexOptions.NonBacktracking);
Console.WriteLine(re.Match("abcde12345").Value);
}
}
Результат выполнения кода:
"12345"
Пример
Давайте проверить IsMatch с флагом:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
var re = new Regex(@"\d+", RegexOptions.NonBacktracking);
Console.WriteLine(re.IsMatch("12345"));
}
}
Результат выполнения кода:
True
Пример
Давайте убедиться, что буквы не совпадают:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
var re = new Regex(@"\d+", RegexOptions.NonBacktracking);
Console.WriteLine(re.IsMatch("abcde"));
}
}
Результат выполнения кода:
False
Смотрите также
-
флаг
Compiled,
который компилирует другой движок -
перечисление
RegexOptions,
куда входит NonBacktracking -
класс
Regex,
которому передают флаги -
флаг
IgnoreCase,
который можно добавить через |