Regex 用于查找sql注释的正则表达式
我试图找到一个正则表达式,它可以用来匹配SQL风格的注释。单行注释相当简单---.*但我无法确定如何匹配多行注释。我不需要实际的替换代码,只需要正则表达式来匹配注释 例如:Regex 用于查找sql注释的正则表达式,regex,Regex,我试图找到一个正则表达式,它可以用来匹配SQL风格的注释。单行注释相当简单---.*但我无法确定如何匹配多行注释。我不需要实际的替换代码,只需要正则表达式来匹配注释 例如: select * from valid_sql1; select * from valid_sql2; --comment here --comment select * from this_is_still_a_comment; /* select * from this_is_not_valid; */
select * from valid_sql1;
select * from valid_sql2; --comment here
--comment select * from this_is_still_a_comment;
/*
select * from this_is_not_valid;
*/
/*comment*/ select * from valid_sql3; /*this is a comment*/
应成为:
select * from valid_sql1;
select * from valid_sql2;
select * from valid_sql3;
非常感谢您的帮助。正则表达式:
(?s)/\*.*?\*/|--注释[^\r\n]*
替换文本:
空位
这将为您删除注释。您必须匹配整个文件,而不是逐行匹配。使用
g
lobal修饰符,如果您的正则表达式引擎接受:
/\/\*.*?\*\/|--.*?\n/gs
多行注释匹配需要使用s
修饰符
如何忽略SQL字符串中的注释
--comment1
select * from /*my table*/sample where a = 's -- string'
and c = 'ss/**/ /* */
/*123*/'
/*
*
*/
/* */
/**/
谢谢,这个演示非常有用,稍加修改就可以在java replaceAll\\/\*[\\s\\s]*?\*\\\\\/Nice中使用。不过有一个警告:它与文件末尾没有换行符的注释不匹配,因此值得先在脚本中添加换行符,以避免以任何不同的方式处理EOF。为了在.Net中使用它,我最后使用的语法是:
string scriptWithoutComments=Regex.Replace(script+“\n”、@“\/\*.*?\*.-.*?\n”、“”、RegexOptions.Singleline)代码>它将匹配文本中类似注释的块。@Qix机器人审批者和随机编辑器今晚将全力以赴。很好的回滚。如果不是为了删除注释,为什么有人想在SQL中查找注释?