using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var input = "aaa +12 bbb 123,456,789 ccc -34 dd 12,345e-42";
foreach (var value in GetValues(input))
Console.WriteLine(value);
}
public static IEnumerable<string> GetValues(string input)
{
// Suppose regex could be any regex
var regex = new Regex(@"(?<concat>[\+-])?(?<concat>[0-9]+)(?:,(?<concat>[0-9]{3}))*(?<concat>[eE][-+]?[0-9]+)?");
foreach (Match match in regex.Matches(input))
{
// Does this regex have our special feature?
if (regex.GroupNumberFromName("concat") >= 0)
{
// Concat the captured values
var captures = match.Groups["concat"].Captures.Cast<Capture>().Select(c => c.Value).ToArray();
yield return String.Concat(captures);
}
else
{
// This is a normal regex
yield return match.Value;
}
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9uczsKCgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJdmFyIGlucHV0ID0gImFhYSArMTIgYmJiIDEyMyw0NTYsNzg5IGNjYyAtMzQgZGQgMTIsMzQ1ZS00MiI7CgkJZm9yZWFjaCAodmFyIHZhbHVlIGluIEdldFZhbHVlcyhpbnB1dCkpCgkJICAgIENvbnNvbGUuV3JpdGVMaW5lKHZhbHVlKTsKCX0KCQoJcHVibGljIHN0YXRpYyBJRW51bWVyYWJsZTxzdHJpbmc+IEdldFZhbHVlcyhzdHJpbmcgaW5wdXQpCgl7CiAgICAgICAgLy8gU3VwcG9zZSByZWdleCBjb3VsZCBiZSBhbnkgcmVnZXgKCQl2YXIgcmVnZXggPSBuZXcgUmVnZXgoQCIoPzxjb25jYXQ+W1wrLV0pPyg/PGNvbmNhdD5bMC05XSspKD86LCg/PGNvbmNhdD5bMC05XXszfSkpKig/PGNvbmNhdD5bZUVdWy0rXT9bMC05XSspPyIpOwoKCQlmb3JlYWNoIChNYXRjaCBtYXRjaCBpbiByZWdleC5NYXRjaGVzKGlucHV0KSkKCQl7CiAgICAgICAgICAgIC8vIERvZXMgdGhpcyByZWdleCBoYXZlIG91ciBzcGVjaWFsIGZlYXR1cmU/CgkJCWlmIChyZWdleC5Hcm91cE51bWJlckZyb21OYW1lKCJjb25jYXQiKSA+PSAwKQoJCQl7CiAgICAgICAgICAgICAgICAvLyBDb25jYXQgdGhlIGNhcHR1cmVkIHZhbHVlcwoJCQkgICAgdmFyIGNhcHR1cmVzID0gbWF0Y2guR3JvdXBzWyJjb25jYXQiXS5DYXB0dXJlcy5DYXN0PENhcHR1cmU+KCkuU2VsZWN0KGMgPT4gYy5WYWx1ZSkuVG9BcnJheSgpOwoJCQkgICAgeWllbGQgcmV0dXJuIFN0cmluZy5Db25jYXQoY2FwdHVyZXMpOwoJCQl9CgkJCWVsc2UKCQkJewogICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIG5vcm1hbCByZWdleAoJCQkJeWllbGQgcmV0dXJuIG1hdGNoLlZhbHVlOwkKCQkJfQoJCX0KCX0KfQ==