using System; using System.IO; using System.Linq; using System.Text.RegularExpressions; public class Issue { public int Id { get; set; } public string IssueName { get; set; } public string Summary { get; set; } public string Solution { get; set; } public string InternalNodes { get; set; } public string ExternalNodes { get; set; } } public class Test { public static string GetText() { using (var sr = new StreamReader(Console.OpenStandardInput(), Console.InputEncoding)) return sr.ReadToEnd(); } public static void Main() { var issues = Regex.Matches(GetText(), @"Issue\s*(\d+):\s*([^\r\n]*?)\s*\r?\n(?:Summary:\s*([^\r\n]*?)\s*\r?\n|Solution:\s*([^\r\n]*?)\s*\r?\n|Affected Nodes: Internal\s*([^\r\n]*?)\s*\r?\n|Affected Nodes: External\s*([^\r\n]*?)\s*\r?\n)*") .Cast() .Select(m => new Issue { Id = int.Parse(m.Groups[1].Value), IssueName = m.Groups[2].Value, Summary = m.Groups[3].Value, Solution = m.Groups[4].Value, InternalNodes = m.Groups[5].Value, ExternalNodes = m.Groups[6].Value, }) .ToList(); foreach (var x in issues) Console.WriteLine("{0} {1} {2,-6} {3,-6} {4,-12} {5,-12}", x.Id, x.IssueName, x.Summary, x.Solution, x.InternalNodes, x.ExternalNodes); } }