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