Вопрос:Regex для удаления одной строки SQL комментарии (-)
Может кто-нибудь дать мне рабочий регулярное выражение (C#/VB.NET), которые можно удалить одну строку комментарии из SQL заявления?
Я имею в виду эти комментарии:
-- This is a comment
не те
/* this is a comment */
, потому что я уже могу обрабатывать звезды комментарии.
У меня есть сделал небольшой парсер, который удаляет эти замечания, когда они находятся в начале строки, но они также могут быть где-то после кода или хуже, в SQL-строку 'hello --Test -- World'
Эти комментарии также должны быть удалены (за исключением строк в строке SQL, если это возможно).
Удивительно, но у меня не было регулярного выражения. Я бы предпочел, чтобы комментарии к звездам были более сложными, но на самом деле это не так.
В соответствии с запросом здесь мой код для удаления/**/- комментариев стиля (Чтобы игнорировать строки SQL-стиля, вы должны подставлять строки с уникальным идентификатором (я использовал 4 concinated), затем применим комментарий-удаление, а затем применить строковое backsubstitution
static string RemoveCstyleComments(string strInput)
{
string strPattern = @"/[*][\w\d\s]+[*]/";
//strPattern = @"/\*.*?\*/"; // Doesn't work
//strPattern = "/\\*.*?\\*/"; // Doesn't work
//strPattern = @"/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/ "; // Doesn't work
//strPattern = @"/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/ "; // Doesn't work
// http://stackoverflow.com/questions/462843/improving-fixing-a-regex-for-c-style-block-comments
strPattern = @"/\*(?>(?:(?>[^*]+)|\*(?!/))*)\*/"; // Works !
string strOutput = System.Text.RegularExpressions.Regex.Replace(strInput, strPattern, string.Empty, System.Text.RegularExpressions.RegexOptions.Multiline);
Console.WriteLine(strOutput);
return strOutput;
} // End Function RemoveCstyleComments
Что конечная цель здесь? Есть более эффективные инструменты для разбора языков ... –
Как вы обрабатывали комментарии '/ ** /' в строках? –
Остин Салонен: путем замены строк с помощью (фактически 4) уникальных идентификаторов, а затем удаления комментариев, а затем обратно-замены строк. –