为什么我的sql注释解析EReg表达式不能编译?

时间:2013-02-25 21:20:38

标签: sql comments haxe neko

我有一个用Haxe编写的sql查询工具,我试图在代码中添加一些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;

}

我的问题不在于这个方法,但neko不会编译它。当我尝试编译此方法时,我收到此消息:

src/skyview/SqlSnippetParser.hx:30: character 33 : Invalid character '\' [Finished in 0.2s with exit code 1]

这条消息所引用的是'\'我试图用来逃避第二组“()”开头的'*'元字符

有谁知道为什么nako不会在这个EReg中编译“/ *”?

1 个答案:

答案 0 :(得分:1)

问题不在于\*/需要转义。

尝试将您的EReg更改为~/(--[^\n]*)|(\/\*[\w\W]*?(?=\*\/)\*\/)/