Regex ведет себя ленивым, должен быть жадным
Я думал, что по умолчанию мойRegex будет демонстрировать жадное поведение, которое я хочу, но это не в следующем коде:
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
Теперь я понимаю, что мог бы заставить его работать для этого небольшого примера, если бы я просто сортировал ключевые слова по убыванию, но
Я хочу понять, почему это не работает, как ожидалось, иРеальный проект, над которым я работаю, содержит в Regex гораздо больше слов, и важно держать их в алфавитном порядке.Итак, мой вопрос: почему это лень и как мне это исправить?