Regex is behaving lazy, should be greedy
alternation, greedy, non-greedy, regex, regex-greedy
Solution
Laziness and greediness applies to quantifiers only (`?`, `*`, `+`, `{min,max}`). Alternations always match in order and try the first possible match.
Problem
I thought that by default my Regex would exhibit the greedy behavior that I want, but it is not in the following 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); } ``` Output: ``` Matched in with in Matched int with in Matched into with in Matched internal with in Matched interface with in ``` Now I realize that I could get it to work for this small example if I simply sorted the keywords by length descending, but - I want to understand why this isn't working as expected, and - the actual project I am working on has many more words in the Regex and it is important to keep them in alphabetical order. So my question is: Why is this being lazy and how do I fix it?