使用javascript正则表达式查找不在引号内的注释

使用javascript正则表达式查找不在引号内的注释,javascript,regex,Javascript,Regex,我想在SQL代码中找到所有注释,例如: 选择1--要删除的备注 一个简单的正则表达式是: /--.+/g 但如果是在引号内,则不是,例如: 选择1,“--不删除代码” 选择1,“hamm--不删除代码” 选择“hamm--不要删除代码”,1 您可能会匹配您不想查找的内容,并在一个组中使用替代项捕获您想查找的内容 '[^']*--[^']*'|(--.+) 那会匹配的 [^']*--[^']*'不匹配'0+次,然后-再次不是“0+次” |或 (-.+)在组1匹配中捕获-以及字符串的其余部分

我想在SQL代码中找到所有注释,例如:

选择1--要删除的备注

一个简单的正则表达式是:

/--.+/g

但如果是在引号内,则不是,例如:

选择1,“--不删除代码”

选择1,“hamm--不删除代码”

选择“hamm--不要删除代码”,1


您可能会匹配您不想查找的内容,并在一个组中使用替代项捕获您想查找的内容

'[^']*--[^']*'|(--.+)
那会匹配的

  • [^']*--[^']*'
    不匹配
    '
    0+次,然后-再次不是“0+次”
  • |
  • (-.+)
    在组1匹配中捕获-以及字符串的其余部分

[
“选择1--要删除的备注”,
“选择1,”--不删除代码“”,
“选择1,'hamm--不删除代码'”,
“选择'hamm--不要删除代码',1”,
].forEach(s=>{
设res=s.match(/'[^']*-[^']*'|(-.+)/);
if(未定义!==res[1]){
console.log(res[1]);
}

});您可能会匹配您不想查找的内容,并在一个组中使用替代项捕获您想查找的内容

'[^']*--[^']*'|(--.+)
那会匹配的

  • [^']*--[^']*'
    不匹配
    '
    0+次,然后-再次不是“0+次”
  • |
  • (-.+)
    在组1匹配中捕获-以及字符串的其余部分

[
“选择1--要删除的备注”,
“选择1,”--不删除代码“”,
“选择1,'hamm--不删除代码'”,
“选择'hamm--不要删除代码',1”,
].forEach(s=>{
设res=s.match(/'[^']*-[^']*'|(-.+)/);
if(未定义!==res[1]){
console.log(res[1]);
}

});我认为您必须为此制作或使用sql解析器。它实际上理解sql语法并决定它是否是字符串(或注释)的一部分。请尝试加工您不想要的内容,并捕获您想要在组中找到的内容
'[^']*-[^']*'|(-.+)
请参见我认为您必须为此制作或使用sql解析器。它实际上理解sql语法并决定它是否是字符串(或注释)的一部分。请尝试加工您不想要的内容,并捕获您想要在组中找到的内容
'[^']*-[^']*'|(-.+)
请参见