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