Java正则表达式从字符串中删除SQL注释
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java正则表达式从字符串中删除SQL注释,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1849字,纯文字阅读大概需要3分钟。
内容图文
![Java正则表达式从字符串中删除SQL注释](/upload/InfoBanner/zyjiaocheng/901/e7d02526cce94c948f86cc7ade8bc731.jpg)
希望有人可以帮我解决这个问题!
我有一个看起来像这样的sql文件:
CREATE TABLE IF NOT EXISTS users(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
PRIMARY KEY (id),
CONSTRAINT UNIQUE (firstname,lastname)
)
ENGINE=InnoDB
;
INSERT IGNORE INTO users (firstname,lastname) VALUES ('x','y');
/*
INSERT IGNORE INTO users (firstname,lastname) VALUES ('a','b');
*/
我有一个web应用程序,它在启动时用这个函数初始化一个mysql数据库:
public static void initDatabase(ConnectionPool pool, File sqlFile){
Connection con = null;
Statement st = null;
String mySb=null;
try{
con = pool.getConnection();
mySb=IOUtils.copyToString(sqlFile);
// We use ";" as a delimiter for each request then we are sure to have well formed statements
String[] inst = mySb.split(";");
st = con.createStatement();
for(int i = 0; i<inst.length; i++){
// we ensure that there is no spaces before or after the request string
// in order not to execute empty statements
if(!inst[i].trim().isEmpty()){
st.executeUpdate(inst[i]);
}
}
st.close();
}catch(IOException e){
throw new RuntimeException(e);
}catch(SQLException e){
throw new RuntimeException(e);
}finally{
SQLUtils.safeClose(st);
pool.close(con);
}
}
(这个功能是在网上找到的.作者,请原谅我不引用你的名字,我丢了!!)
只要没有SQL注释块,它就能完美运行.
copyToString()函数基本上就是它所说的.
我现在想要的是构建一个将从字符串中删除块注释的正则表达式.我只在文件中有块注释/ * * /,没有 – .
到目前为止我尝试过的:
mySb = mySb.replaceAll("/\\*.*\\*/", "");
不幸的是,我不是很擅长正则表达式……
我得到了“匹配的字符串看起来像/ *评论* /真实陈述/ *另一个评论* /”等所有麻烦……等等…
解决方法:
尝试
mySb = mySb.replaceAll("/\\*.*?\\*/", "");
(注意?代表“lazy”).
编辑:要涵盖多行注释,请使用以下方法:
Pattern commentPattern = Pattern.compile("/\\*.*?\\*/", Pattern.DOTALL);
mySb = commentPattern.matcher(mySb).replaceAll("");
希望这对你有用.
内容总结
以上是互联网集市为您收集整理的Java正则表达式从字符串中删除SQL注释全部内容,希望文章能够帮你解决Java正则表达式从字符串中删除SQL注释所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。