using System.Text;
using System.Text.RegularExpressions;

namespace Base.Utils {
	public static class RegexUtils {
		public static readonly RegexOptions Text = RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture | RegexOptions.Compiled;

		public static string Balance(string escapedStart, string escapedEnd) { // \(((?>[^()]+|\((?<n>)|\)(?<-n>))+(?(n)(?!)))\)
			return new StringBuilder()
			       .Append(escapedStart)
			       .Append(@"((?>[^")
			       .Append(escapedStart)
			       .Append(escapedEnd)
			       .Append(@"]+|")
			       .Append(escapedStart)
			       .Append(@"(?<n>)|")
			       .Append(escapedEnd)
			       .Append(@"(?<-n>))+(?(n)(?!)))")
			       .Append(escapedEnd)
			       .ToString();
		}
	}
}