Javaを使用して単一の文字列から単一行のSQLコメントを削除するにはどうすればよいですか? 次のようなことを試しましたが、これは絶対確実ではないようです。select '--hi' from dual のように select ステートメントでリテラルとして表示される場合、'--' 文字を考慮する正規表現が必要です。
protected String removeSingleLineComments(String sql)
{
Pattern pattern = Pattern.compile("--[^\r\n]*");
Matcher matcher = pattern.matcher(sql);
while(matcher.find()) {
if((matcher.start()==0) || (matcher.start()>0 && sql.charAt(matcher.start()-1) != '\''))
{
sql =sql.replace(sql.substring(matcher.start(), matcher.end()), "").trim();
}
}
return sql;
}