Regex для преобразования оператора SQL INSERT в словарь ключа, значения - PullRequest
0 голосов
/ 09 мая 2018

Мне нужно регулярное выражение для преобразования операторов 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);

но не совпадает.

Что я делаю не так?

Спасибо за внимание

1 Ответ

0 голосов
/ 09 мая 2018

Правильное регулярное выражение

var insertRegex = @"INSERT INTO (?[A-Z_]*)\(((?[""A-Za-z_]+),?)*\) VALUES\(((?'[^']*'),?)*\)";

Обрабатывает пустые строковые значения ''

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...