最稳妥的行首注释匹配正则是^\s*(?://|#).*$,它仅匹配以空白符开头、后跟//或#的整行,避免误删URL、正则字面量及字符串内符号;需关闭Match Case和Whole Word选项,并谨慎处理行中注释。

用 ^\s*(?://|#).*$ 匹配行首注释最稳妥
直接搜 //.*$ 或 #.*$ 会误删 url = "https://api.com#anchor"、const r = /a\/\/b/;,甚至 Python 字符串里的 "# not a comment"。真正安全的写法是加行首和空白约束:^\s*(?://|#).*$——它只命中以空格或制表符开头、紧接着 // 或 # 的整行,跳过代码中间和字符串内部。
必须关掉 Match Case 和 Whole Word
Sublime 默认可能开着大小写匹配或全字匹配,导致 // 没被识别(比如某些 Shell 脚本里写成 # 但混用了大写注释头),或把 int x = 1; // init 当成“全词”漏掉——其实你根本不需要它们。操作前务必检查查找面板左下角两个开关:确保 Match Case 是灰色(关闭),Whole Word 也是灰色。
别碰行中注释,除非你手动确认每一处
^\s*(?://|#).*$ 天然不处理行中注释(如 let x = 1; // default)。想删它们?换 \s+(?://|#).*$ 是技术上可行,但风险陡增:它会匹配 url = "https://a.com//b"; // comment 中的 //b"; // comment,删完只剩 url = "https://a.com。真要动行中注释,必须先点 Find All 高亮所有匹配项,逐条 eyeball 确认是否为真注释——尤其注意引号、正则字面量、URL 片段。
删完立刻抽检三处:开头、逻辑块、配置段
正则再准也分不清 # default=1 是注释还是关键配置。删完别急着保存,先按 Ctrl+Z 回退一次验证效果;再打开文件,随机跳到三个位置看:文件头(常有 license 注释)、中间函数体(防误吞调试语句)、结尾(.env 或 nginx.conf 类配置段最容易出事)。抽检不是走形式——# default=1 被删掉,服务启动就失败,这种坑没法靠正则绕过去。

















