Мне нужно регулярное выражение для преобразования операторов SQL INSERT в словарь ключей, значений. Значение может быть сложной формулой.
Стратегия, которую я использовал, - это C # группы и захваты.
Например
A-> RIC_MIGRATION
B-> RIC_MIGRATION
C-> AND ((IN (CurrencyStr, "AUD", "NZD", "EUR")), AND (1, AND (1, AND ((FeedToPXE2 = "1"), (RIC_CRED_ValueSource = "1 "), (FeedToPXE1 =" 0 "), (IN (InsType," A "," C "," T ")),)),),)
Я пробовал ниже
var insertRegex = @"INSERT INTO (?[A-Z_]*)\(((?[""A-Za-z_]+),?)*\) VALUES\(((?'[^']+'),?)*\)";
var inputString=@"INSERT INTO TABLEA(A,""B"",C,D,E,F,G,H,I,J,K,L,M) VALUES('RIC_MIGRATION','RIC_MIGRATION','AND ( ( IN ( CurrencyStr , ""AUD"",""NZD"",""EUR"" ) ) , AND ( 1, AND ( 1, AND ( ( FeedToPXE2 = ""1"") , ( RIC_CRED_ValueSource = ""1"") , ( FeedToPXE1 = ""0"") , ( IN ( InsType , ""A"",""C"",""T"" ) ) , )) , ) , )','','','EUR.CM_INSTRUMENT.REFDATA.INSTRUMENTGROUP_PXECRED_RIC_MIGRATION','1','1','0','','','0','No')";
var regMatch = Regex.Match(inputString, insertRegex);
но не совпадает.
Что я делаю не так?
Спасибо за внимание