Regex se está comportando perezoso, debería ser codicioso

Pensé que por defecto miRegex exhibiría el comportamiento codicioso que quiero, pero no está en el siguiente código:

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

Salida:

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

Ahora me doy cuenta de que podría hacer que funcione para este pequeño ejemplo si simplemente clasifico las palabras clave por longitud descendente, pero

Quiero entender por qué esto no funciona como se esperaba, yEl proyecto real en el que estoy trabajando tiene muchas más palabras en Regex y es importante mantenerlas en orden alfabético.

Entonces mi pregunta es: ¿por qué esto es flojo y cómo lo soluciono?

Respuestas a la pregunta(3)

Su respuesta a la pregunta