为什么这个表达式不遵循贪婪的方法?
string input = @"cool man! your dog can walk on water ";
string pattern = @"cool (?<cool>(.*)) (?<h>((dog)*)) (?(h)(?<dog>(.*))) ";
MatchCollection matches = Regex.Matches(input, pattern, RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture | RegexOptions.IgnorePatternWhitespace);
foreach (Match match in matches)
{
Console.WriteLine("cool=" + match.Groups["cool"].Value);
Console.WriteLine("dog=" + match.Groups["dog"].Value);
Console.ReadLine();
}
输出:
酷=男人!你的狗可以在水上行走 狗=
如您所见: (dog) 组匹配 0 次。但是,* 是贪婪的,为什么不尝试找到 (dog) 的最大匹配项,即 1?
有什么线索吗?