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 = "(Today is a blue day) (Today is a good day) (Today is a BAD day) (Today is a green day) (Today is a blue day)";
var matches = Regex.Matches(text, @"\((?>([^()]*\bBAD\b)?)[^()]*\)(?(1)(?!))")
.Cast<Match>()
.Select(x => x.Value)
.ToList();
foreach (var m in matches)
Console.WriteLine(m);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLklPOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciB0ZXh0ID0gIihUb2RheSBpcyBhIGJsdWUgZGF5KSAoVG9kYXkgaXMgYSBnb29kIGRheSkgKFRvZGF5IGlzIGEgQkFEIGRheSkgKFRvZGF5IGlzIGEgZ3JlZW4gZGF5KSAoVG9kYXkgaXMgYSBibHVlIGRheSkiOwoJCXZhciBtYXRjaGVzID0gUmVnZXguTWF0Y2hlcyh0ZXh0LCBAIlwoKD8+KFteKCldKlxiQkFEXGIpPylbXigpXSpcKSg/KDEpKD8hKSkiKQogICAgCQkuQ2FzdDxNYXRjaD4oKQogICAgCQkuU2VsZWN0KHggPT4geC5WYWx1ZSkKICAgIAkJLlRvTGlzdCgpOwogICAgICAgIGZvcmVhY2ggKHZhciBtIGluIG1hdGNoZXMpCiAgICAgICAgCUNvbnNvbGUuV3JpdGVMaW5lKG0pOwoJfQp9