我想在SQL代码中找到所有注释,例如:
选择1-备注以删除
一个简单的正则表达式将是:
/--.+/ g
但是如果在引号内,则不会,例如:
选择1,“-不删除代码”
选择1,'hamm-请勿删除代码'
选择'hamm-请勿删除代码',1
答案 0 :(得分:2)
您可能会匹配您不想找到的内容,并在一个小组中捕获您想要找到的内容
'[^']*--[^']*'|(--.+)
这将匹配
[^']*--[^']*'
不匹配'
0次以上,然后-不匹配'0+次|
或(--.+)
捕获组1中的匹配内容-以及字符串的其余部分
[
"select 1 --remark to remove",
"select 1, '--do not remove code'",
"select 1, 'hamm --do not remove code'",
"select 'hamm --do not remove code',1",
].forEach(s => {
let res = s.match(/'[^']*--[^']*'|(--.+)/);
if (undefined !== res[1]) {
console.log(res[1]);
}
});