private Capture GetCapture(string key, IEnumerable <Group> groups) { var patternName = key = Grok.GetCaptureName(key) ?? key; string identifier = null; var splits = key.Split(new[] { ':' }, 2); if (splits.Length > 1) { patternName = splits[0]; identifier = splits[1].Trim(); } return(new Capture(patternName, identifier, groups.Where(g => g.Success).Select(g => g.Value).ToArray())); }