<p>必须分步、分语言、人工核验删除注释:先处理/ /块注释,用/*[\s\S]*?*/并启用跨行匹配;再删//和#行首注释,用^\s(?://|#).$;不同语言需不同正则,且务必先Find All并抽检三处以上。</p>

不能“一键删除所有注释”,必须分步、分语言、人工核验——跳过任何一环,https://api.com#anchor、const r = /a\/b/; 或配置项 # default=1 都可能被连根删掉。
先删 /* */ 块注释,必须启用 “. matches newline”
块注释跨行时,/\*.*?\*/ 会失效:默认的 . 不匹配换行符,正则只在单行扫描,结果漏掉真实多行块。唯一稳定写法是 /\*[\s\S]*?\*/,其中 [\s\S] 显式覆盖所有字符(含换行),? 确保非贪婪,避免从第一个 /* 一路吃到文件末尾最后一个 */。
- 操作前务必点击查找面板右下角那个
.\n图标启用跨行匹配 - 别用
/\*.*\*/(无?)——它会贪婪吞掉中间所有函数和代码 - 若文件语法被设为
Plain Text,/\*[\s\S]*?\*/可能误吞字符串里的"/* in string */",先按Ctrl+Shift+P→Set Syntax指定正确语言
再删 // 和 # 行首注释,锚定位置是关键
直接搜 //.*$ 或 #.*$ 极其危险:会把 url = "https://a.com#anchor"、http://、正则字面量 /a\/\/b/ 全部干掉。稳妥做法是加行首或缩进约束:^\s*(?://|#).*$。
- 这个表达式只匹配行首或缩进后紧跟的注释标记,避开 URL 和字符串
- 它不处理行中注释(如
int x = 1; // init),强行删会破坏代码结构;真需要,得换\s+(?://|#).*$并手动逐个确认 -
Match case一般不用勾选——注释符号大小写固定,开反而容易漏
不同语言必须换正则,没有万能模式
Python 的三引号文档字符串不是 /* */,HTML 是 <!-- -->,Lua 是 --[[ ]]--。Sublime 不做语法解析,纯靠正则硬匹配,混用等于主动埋雷。
-
.py文件块注释用"""[\s\S]*?"""|'''[\s\S]*?''' -
.html文件必须用<!--[\s\S]*?-->,否则//会误删内联<script>里的 JS 注释 - 检查右下角状态栏语言名,或用
Ctrl+Shift+P→Set Syntax显式指定,别依赖自动识别
永远先 Find All,再人工抽检三处以上
正则删注释不是无状态替换。即使用了最稳妥的表达式,仍可能误删:JSON 里手写的 // 标记、模板字符串中的 #、YAML 配置里的 # default=1。
-
Ctrl+Shift+F粘贴正则 → 点Find All看高亮是否全为真注释 - 至少抽检三处:开头(如 license header)、中间逻辑块(如函数体内的注释)、结尾配置段(如
# timeout=30) - 删完立刻
Ctrl+Z回退验证——恢复成本远高于预防时间
真正麻烦的从来不是正则写不对,而是你没意识到那段「看起来像注释」的文本,其实是运行时才解释的模板变量、配置标记,或者被引号包裹的合法数据。

















