Почему мой 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]*?(?=\*\/)\*\/)/,

Другие вопросы по тегам