使用javascript正则表达式查找不在引号内的注释
我想在SQL代码中找到所有注释,例如: 选择1--要删除的备注 一个简单的正则表达式是: /--.+/g 但如果是在引号内,则不是,例如: 选择1,“--不删除代码” 选择1,“hamm--不删除代码” 选择“hamm--不要删除代码”,1使用javascript正则表达式查找不在引号内的注释,javascript,regex,Javascript,Regex,我想在SQL代码中找到所有注释,例如: 选择1--要删除的备注 一个简单的正则表达式是: /--.+/g 但如果是在引号内,则不是,例如: 选择1,“--不删除代码” 选择1,“hamm--不删除代码” 选择“hamm--不要删除代码”,1 您可能会匹配您不想查找的内容,并在一个组中使用替代项捕获您想查找的内容 '[^']*--[^']*'|(--.+) 那会匹配的 [^']*--[^']*'不匹配'0+次,然后-再次不是“0+次” |或 (-.+)在组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语法并决定它是否是字符串(或注释)的一部分。请尝试加工您不想要的内容,并捕获您想要在组中找到的内容'[^']*-[^']*'|(-.+)
请参见