Regex benimmt sich faul, sollte gierig sein

Ich dachte, dass standardmäßig meineRegex würde das gierige Verhalten zeigen, das ich will, aber es ist nicht im folgenden Code:

 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);
    }

Ausgabe:

Matched in        with in
Matched int       with in
Matched into      with in
Matched internal  with in
Matched interface with in

Jetzt wird mir klar, dass ich es für dieses kleine Beispiel zum Laufen bringen könnte, wenn ich die Schlüsselwörter einfach nach absteigender Länge sortiere, aber

Ich möchte verstehen, warum dies nicht wie erwartet funktioniert, undDas eigentliche Projekt, an dem ich arbeite, enthält viel mehr Wörter im Regex, und es ist wichtig, sie in alphabetischer Reihenfolge zu halten.

Meine Frage lautet also: Warum ist das faul und wie behebe ich das?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage