using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var text = "$(string1$(string2)$sometexthere$(string3$(string4)$texttext)$anothertext)$";
var pattern = @"(?=(?<result>\$\((?>[^()]+|(?<o>\()|(?<-o>\)))*(?(o)(?!))\)\$))";
var results = Regex.Matches(text, pattern)
.Cast<Match>()
.Select(x => x.Groups["result"].Value)
.ToList();
foreach (var s in results)
Console.WriteLine(s);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLklPOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciB0ZXh0ID0gIiQoc3RyaW5nMSQoc3RyaW5nMikkc29tZXRleHRoZXJlJChzdHJpbmczJChzdHJpbmc0KSR0ZXh0dGV4dCkkYW5vdGhlcnRleHQpJCI7CiAgICAJdmFyIHBhdHRlcm4gPSBAIig/PSg/PHJlc3VsdD5cJFwoKD8+W14oKV0rfCg/PG8+XCgpfCg/PC1vPlwpKSkqKD8obykoPyEpKVwpXCQpKSI7CgkJdmFyIHJlc3VsdHMgPSBSZWdleC5NYXRjaGVzKHRleHQsIHBhdHRlcm4pCgkJICAgICAgICAuQ2FzdDxNYXRjaD4oKQoJCSAgICAgICAgLlNlbGVjdCh4ID0+IHguR3JvdXBzWyJyZXN1bHQiXS5WYWx1ZSkKCQkgICAgICAgIC5Ub0xpc3QoKTsKICAgICAgICBmb3JlYWNoICh2YXIgcyBpbiByZXN1bHRzKQogICAgICAgIAlDb25zb2xlLldyaXRlTGluZShzKTsKCX0KfQ==