Regex está se comportando preguiçoso, deve ser ganancioso
Eu pensei que por padrão meuRegex exibirá o comportamento ganancioso que eu quero, mas não está no código a seguir:
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);
}
Resultado:
Matched in with in
Matched int with in
Matched into with in
Matched internal with in
Matched interface with in
Agora percebo que poderia funcionar para este pequeno exemplo se simplesmente classificasse as palavras-chave por comprimento decrescente, mas
Quero entender por que isso não está funcionando conforme o esperado eo projeto em que estou trabalhando tem muito mais palavras no Regex e é importante mantê-las em ordem alfabética.Portanto, minha pergunta é: por que isso é preguiçoso e como corrigi-lo?