如何从单个字符串中使用Java删除单行SQL注释? 我尝试了类似于以下内容的内容,但这看起来似乎没有什么不妥。 需要一个正则表达式,当它们在选择语句中显示为文字时,将处理' - '字符,如从双重选择'--hi'。使用java删除单行SQL注释
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;
}
什么是你的SQL示例的模式?它总是1行SQL?多行SQL,但你只想删除最后一行评论?你的代码如何失败? –
呃,你确定你的行尾总是有两个字符吗?并非每个平台都使用相同的平台。如果'Pattern'的值是硬编码的,则可以将其设为常量实例。 'String'有一个'replaceAll()'方法,它将输入字符串(不需要'Pattern' /'Matcher'需要);你的'if'子句可以并且应该是正则表达式的一部分。 –
我知道String.replaceAll()。不过,我需要处理' - '作为文本块的一部分出现,就像在 - 从双重选择'--hi'一样。用我的正则表达式,文本'--hi'也会被过滤掉。我需要一个新的模式来解释文本块 – user2589299