Что означают «ленивый» и «жадный» в контексте регулярных выражений? - PullRequest
431 голосов
/ 20 февраля 2010

Может ли кто-нибудь объяснить эти два термина понятным образом?

Ответы [ 11 ]

0 голосов
/ 30 октября 2016

попытайтесь понять следующее поведение:

    var input = "0014.2";

Regex r1 = new Regex("\\d+.{0,1}\\d+");
Regex r2 = new Regex("\\d*.{0,1}\\d*");

Console.WriteLine(r1.Match(input).Value); // "0014.2"
Console.WriteLine(r2.Match(input).Value); // "0014.2"

input = " 0014.2";

Console.WriteLine(r1.Match(input).Value); // "0014.2"
Console.WriteLine(r2.Match(input).Value); // " 0014"

input = "  0014.2";

Console.WriteLine(r1.Match(input).Value); // "0014.2"
Console.WriteLine(r2.Match(input).Value); // ""
...