using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var block = @"[-+]?\d+#(?:[-+]?\d*\.?\d+|~)"; // Block/unit pattern
var pattern = $@"(?<=^(?:{block},\s)*){block}(?=(?:,\s{block})*$)";
//Console.WriteLine(pattern);
var results1 = Regex.Matches("3#0.01, 2#0.5, 1#-10, -2#~", pattern)
.Cast<Match>().Select(x => x.Value);
if (results1.Count() > 0)
Console.WriteLine(string.Join(", ", results1));
var results2 = Regex.Matches("MISTAKE3#0.01, 2#0.5, 1#-10, -2#~AND_HERE_MISTAKE_TOO", pattern)
.Cast<Match>().Select(x => x.Value);
if (results2.Count() > 0)
Console.WriteLine(string.Join(", ", results2));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLklPOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciBibG9jayA9IEAiWy0rXT9cZCsjKD86Wy0rXT9cZCpcLj9cZCt8fikiOyAgIC8vIEJsb2NrL3VuaXQgcGF0dGVybgogICAgCXZhciBwYXR0ZXJuID0gJEAiKD88PV4oPzp7YmxvY2t9LFxzKSope2Jsb2NrfSg/PSg/Oixcc3tibG9ja30pKiQpIjsKICAgIAkvL0NvbnNvbGUuV3JpdGVMaW5lKHBhdHRlcm4pOwogICAgCXZhciByZXN1bHRzMSA9IFJlZ2V4Lk1hdGNoZXMoIjMjMC4wMSwgMiMwLjUsIDEjLTEwLCAtMiN+IiwgcGF0dGVybikKICAgIAkJLkNhc3Q8TWF0Y2g+KCkuU2VsZWN0KHggPT4geC5WYWx1ZSk7CiAgICAgICAgaWYgKHJlc3VsdHMxLkNvdW50KCkgPiAwKQogICAgICAgIAlDb25zb2xlLldyaXRlTGluZShzdHJpbmcuSm9pbigiLCAiLCByZXN1bHRzMSkpOwogICAgICAgIHZhciByZXN1bHRzMiA9IFJlZ2V4Lk1hdGNoZXMoIk1JU1RBS0UzIzAuMDEsIDIjMC41LCAxIy0xMCwgLTIjfkFORF9IRVJFX01JU1RBS0VfVE9PIiwgcGF0dGVybikKICAgICAgICAJLkNhc3Q8TWF0Y2g+KCkuU2VsZWN0KHggPT4geC5WYWx1ZSk7CiAgICAgICAgaWYgKHJlc3VsdHMyLkNvdW50KCkgPiAwKQogICAgICAgIAlDb25zb2xlLldyaXRlTGluZShzdHJpbmcuSm9pbigiLCAiLCByZXN1bHRzMikpOwoJfQp9