Compiled
RegexOptions.Compiled просит JIT
скомпилировать автомат регулярного выражения
в IL. Имеет смысл, если один и тот же
Regex вызывают много раз: первое
создание дороже, последующие совпадения быстрее.
Для разового поиска флаг часто не нужен.
Синтаксис
var re = new Regex(pattern, RegexOptions.Compiled);
Пример
Давайте создать скомпилированный Regex:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
var re = new Regex(@"\d+", RegexOptions.Compiled);
Console.WriteLine(re.IsMatch("12345"));
}
}
Результат выполнения кода:
True
Пример
Давайте вызвать один объект два раза:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
var re = new Regex(@"abc", RegexOptions.Compiled);
Console.WriteLine(re.IsMatch("abcde"));
Console.WriteLine(re.IsMatch("12345"));
}
}
Результат выполнения кода:
True
False
Пример
Давайте объединить Compiled с IgnoreCase:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
var re = new Regex(@"ABC", RegexOptions.Compiled | RegexOptions.IgnoreCase);
Console.WriteLine(re.IsMatch("abcde"));
}
}
Результат выполнения кода:
True
Смотрите также
-
флаг
NonBacktracking,
который задаёт другой движок -
перечисление
RegexOptions,
куда входит Compiled -
класс
Regex,
которому передают флаги -
флаг
IgnoreCase,
который часто комбинируют с Compiled