Атрибут GeneratedRegex
Атрибут [GeneratedRegex] вешают на
partial метод, возвращающий
Regex;
класс тоже объявляют partial.
Компилятор генерирует реализацию при
сборке - в рантайме new Regex
для этого шаблона не нужен. Ошибки
разбора дают
RegexParseException
на этапе компиляции.
Синтаксис
partial class Program
{
[GeneratedRegex(@"шаблон")]
private static partial Regex MyRegex();
}
Пример
Давайте найдём цифры через сгенерированный
Regex:
using System;
using System.Text.RegularExpressions;
partial class Program
{
[GeneratedRegex(@"\d+")]
private static partial Regex DigitsRegex();
static void Main()
{
Match match = DigitsRegex().Match("12345");
Console.WriteLine(match.Value);
}
}
Результат выполнения кода:
"12345"
Пример
Давайте проверим совпадение букв через
IsMatch:
using System;
using System.Text.RegularExpressions;
partial class Program
{
[GeneratedRegex(@"abc")]
private static partial Regex AbcRegex();
static void Main()
{
bool res = AbcRegex().IsMatch("abcde");
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте переиспользуем один сгенерированный объект в двух вызовах:
using System;
using System.Text.RegularExpressions;
partial class Program
{
[GeneratedRegex(@"\d")]
private static partial Regex DigitRegex();
static void Main()
{
var regex = DigitRegex();
Console.WriteLine(regex.IsMatch("12345"));
Console.WriteLine(regex.IsMatch("abcde"));
}
}
Результат выполнения кода:
True
False
Смотрите также
-
Regex,
тип, который возвращает метод -
RegexOptions,
которые можно указать в атрибуте -
цифра,
которую задают шаблоном \d+ -
RegexParseException,
которое видно при ошибке шаблона