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 = "ISNULL(d.Type, 0), d.Subject + ', ' + d.Name, d.Something,array_position(ARRAY['f', 'p', 'i', 'a']::varchar[], x_field), test";
var pattern = @"(\([^()]*\)|'[^']*')|\s*,";
var result = Regex.Replace(text, pattern, m => m.Groups[1].Success ? m.Value : " DESC,");
Console.WriteLine(result);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLklPOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciB0ZXh0ID0gIklTTlVMTChkLlR5cGUsIDApLCBkLlN1YmplY3QgKyAnLCAnICsgZC5OYW1lLCBkLlNvbWV0aGluZyxhcnJheV9wb3NpdGlvbihBUlJBWVsnZicsICdwJywgJ2knLCAnYSddOjp2YXJjaGFyW10sIHhfZmllbGQpLCB0ZXN0IjsKCQl2YXIgcGF0dGVybiA9IEAiKFwoW14oKV0qXCl8J1teJ10qJyl8XHMqLCI7CiAgICAJdmFyIHJlc3VsdCA9IFJlZ2V4LlJlcGxhY2UodGV4dCwgcGF0dGVybiwgbSA9PiBtLkdyb3Vwc1sxXS5TdWNjZXNzID8gbS5WYWx1ZSA6ICIgREVTQywiKTsKICAgICAgIAlDb25zb2xlLldyaXRlTGluZShyZXN1bHQpOwoJfQp9
ISNULL(d.Type, 0) DESC, d.Subject + ', ' + d.Name DESC, d.Something DESC,array_position(ARRAY['f', 'p', 'i', 'a']::varchar[], x_field) DESC, test