Я пытаюсь превратить эту строку:
INSERT INTO [main]. [Sqlite_default_schema]. [TableName] ( [SomeColumn], [SomeOtherColumn], [Last] ) ЗНАЧЕНИЯ ( @ param1, @ param2, @ param3 );
в этот:
INSERT INTO [main]. [ sqlite_default_schema]. [TableName] ([SomeColumn], [SomeOtherColumn], [Last]) VALUES ( @ SomeColumn, @SomeOtherColumn, @ Last );
как новичок в регулярное выражение, я использую этот C# фрагмент:
Regex regex = new Regex(@"\(.*?\)");
MatchCollection matches = regex.Matches(commandText);
if (matches[0].Success && matches[1].Success)
{
Regex reColNames = new Regex(@"\[\w*\]");
MatchCollection colNames = reColNames.Matches(matches[0].Value);
Regex reParamNames = new Regex(@"\@\w*");
MatchCollection paramNames = reParamNames.Matches(matches[1].Value);
if (colNames.Count > 0 && colNames.Count == paramNames.Count)
{
for (int i = 0; i < paramNames.Count; i++)
{
string colName = colNames[i].Value.Substring(1, colNames[i].Length - 2);
commandText = commandText.Replace(paramNames[i].Value, "@" + colName);
}
}
}
return commandText;
Это работает, но не кажется правильным. Есть ли способ достичь того же результата с помощью одного регулярного выражения?
Cheers!