Почему мой SQL-комментарий при разборе выражения EReg не компилируется?
У меня есть инструмент SQL Server Query, который написан на Haxe, и я пытаюсь добавить некоторую поддержку SQL-комментариев к коду. В настоящее время, если у пользователя есть какие-либо комментарии (однострочные или многострочные), запрос не выполняется на стороне сервера. Таким образом, я пытаюсь написать простой метод, который принимает SQL пользовательский ввод и заменяет любые комментарии "". Вот метод
static function removeComments(snippet: SqlSnippet): SqlSnippet {
var rComment: EReg = ~/(--[^\n]*)|(/\*[\w\W]*?(?=\*/)\*/)/;
var resultSql = rComment.replace(snippet.sql, "");
snippet.sql = resultSql;
return snippet;
}
Моя проблема не с этим методом, но это не собирается компилировать. Когда я пытаюсь скомпилировать этот метод, я получаю это сообщение:
src/skyview/SqlSnippetParser.hx:30: character 33 : Invalid character '\'
[Finished in 0.2s with exit code 1]
"\" это сообщение ссылается на "\", которое я пытаюсь использовать для выхода из метасимвола "*" в начале второго набора "()"
Кто-нибудь знает, почему Нако не скомпилирует "/*" в этом EReg?
1 ответ
Проблема не в \*
, это /
нужно сбежать.
Попробуйте изменить свой EReg на ~/(--[^\n]*)|(\/\*[\w\W]*?(?=\*\/)\*\/)/
,