我认为默认情况下我的正则表达式会表现出我想要的贪婪行为,但它不在以下代码中:
Regex keywords = new Regex(@"in|int|into|internal|interface");
var targets = keywords.ToString().Split('|');
foreach (string t in targets)
{
Match match = keywords.Match(t);
Console.WriteLine("Matched {0,-9} with {1}", t, match.Value);
}
输出:
Matched in with in
Matched int with in
Matched into with in
Matched internal with in
Matched interface with in
现在我意识到,如果我只是按长度降序对关键字进行排序,我可以让它适用于这个小例子,但是
- 我想了解为什么这不能按预期工作,并且
- 我正在处理的实际项目在正则表达式中有更多的单词,并且保持它们按字母顺序排列很重要。
所以我的问题是:为什么这是懒惰的,我该如何解决?