Регулярное выражение для удаления комментариев из оператора SQL

Я пытаюсь придумать регулярное выражение для удаления комментариев из оператора SQL.

Это регулярное выражение почти работает:

(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|'(?:[^']|'')*'|(--.*)

За исключением того, что последняя часть не очень хорошо обрабатывает комментарии "--". Проблема заключается в обработке строк SQL, разделенных символом ''.

Например, если у меня есть

SELECT ' -- Hello -- ' FROM DUAL

Это не должно совпадать, но совпадает.

Это в ASP/VBscript.

Я думал о сопоставлении справа налево, но я не думаю, что механизм регулярных выражений VBScript поддерживает это. Также пробовал возиться с негативным взглядом назад, но результаты были не очень хорошими.

6
задан casperOne 13 March 2012 в 19:11
поделиться