Ленивые квантификаторы
После *, + или ? ставят
ещё ?: *?, +?.
Жадный квантификатор
берёт максимум символов, ленивый - минимум,
при котором шаблон ещё сходится.
Синтаксис
Regex.Match(text, @".*?");
Пример
Давайте сравнить .* и .*? до буквы "e":
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string text = "axbxe";
var greedy = Regex.Match(text, @"a.*e");
var lazy = Regex.Match(text, @"a.*?e");
Console.WriteLine(greedy.Value + " " + lazy.Value);
}
}
Результат выполнения кода:
axbxe axe
Пример
Давайте применить +? к цифрам:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
var m = Regex.Match("a12345", @"\d+?");
Console.WriteLine(m.Value);
}
}
Результат выполнения кода:
"1"
Пример
Давайте взять короткий фрагмент в "abcde":
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
var m = Regex.Match("abcde", @".??");
Console.WriteLine("\"" + m.Value + "\"");
}
}
Результат выполнения кода:
""
Смотрите также
-
квантификатор,
жадные * и + -
группа,
ленивость внутри скобок -
любой символ,
. с *? -
RegexParseException,
ошибка шаблона