using System; using System.Text.RegularExpressions; public class Test { static bool HasOnlyOne(Match m, int g1, int g2) { if (!m.Success) { return false; } var has1 = m.Groups[g1].Success; var has2 = m.Groups[g2].Success; return !has1 || !has2; } public static void Main() { var r = new Regex(@"^[@][nN]([$]|[~][^~]*[~])?(-)?[1-9][0-9]*(-)?([$]|[~][^~]*[~])?$"); string s; while ((s = Console.ReadLine()) != null) { var m = r.Match(s); bool good = HasOnlyOne(m, 1, 4) && HasOnlyOne(m, 2, 3); if (good) { Console.WriteLine("Match: {0}", s); } else { Console.WriteLine("Fail: {0}", s); } } } }