Sublime中/.../跨行替换失败是因正则默认不匹配换行符,需用(?s)开启单行模式,配合安全正则(?s)/*(1|*(?!/))**/匹配,替换为//$1,并勾选正则与大小写匹配选项。* ↩

为什么 /* ... */ 跨行替换总失败?
因为 Sublime 的正则引擎默认不匹配换行符,.* 会卡在第一行末尾。你看到的“没反应”或“只替换了第一行”,大概率是这个原因。必须显式开启单行模式(. 匹配换行)或改用能跨行的原子结构。
用 (?s) 开启单行模式最稳
在查找框里写正则时,开头加 (?s),它会让 . 匹配包括 \n 在内的所有字符。这是 Sublime 原生支持、兼容性最好、也最不容易误伤的方案。
- 查找:
(?s)/\*([^*]|\*(?!/))*\*/—— 更安全地匹配/* ... */(避开中间出现*/的情况) - 替换为:
// $1—— 注意$1是捕获的内容,前后空格按需保留 - 务必勾选
Regular Expression和Match Case(避免误吞大写的/*注释)
遇到嵌套 /* 或连续注释怎么办?
Sublime 的正则不支持递归,碰到 /* /* inner */ outer */ 这种会直接匹配到第一个 */ 就停。这不是 bug,是能力边界。实际项目中这类嵌套极少,真有就得人工扫一遍。
- 如果注释块里含
//或字符串"/*",(?s)方案也会错匹配 —— 这时别硬上正则,用Ctrl+Shift+P→Convert Comments插件更可靠 - 批量处理前先
Ctrl+D选中一个注释,确认高亮范围是否完整,避免“看着替了,其实漏了换行”
/** ... */ 文档注释要单独处理
JavaDoc / JSDoc 风格的 /** 注释常带缩进和星号列,直接套用前面的正则会把每行的 * 当内容吞掉。得用多行捕获再清理。
- 查找:
(?s)/\*\*([^*]|\*(?!/))*\*/ - 替换为:
// $1,然后手动或用^\s*\*\s?清理残留星号(或跑一次「删除行首星号」的辅助替换) - 注意:有些文档注释末尾有
@param等标签,转成//后语义丢失,这种建议保留原格式
跨行注释转单行本质是信息压缩,空格、换行、星号对齐这些视觉线索一删就没了。别指望正则全自动保真,关键位置还是得人眼看一眼。

















