Sublime可通过正则提取注释内容:行注释用^\s*(?://|#)\s*(.+)$(需关闭. matches newline),块注释用/\*\s*([\s\S]*?)\*/(需开启. matches newline),HTML用,均依赖正确语法设置。

用正则提取注释内容,不是删它也不是注释它
Sublime 本身不提供“导出注释”功能,但能用 Find 功能配合正则把所有注释文本精准抓出来——关键不是匹配//或#符号本身,而是捕获它们后面的可读文本。操作前务必确认右下角语法已设为对应语言(如Python、JavaScript),否则/*可能被当字符串处理。
行注释提取:用^\s*(?://|#)\s*(.+)$匹配有效内容
这个正则只抓行首/缩进后紧跟的注释文字,避开 URL、正则字面量和字符串里的伪注释:
-
^\s*锚定行首并容忍缩进,防止误抓url = "https://a.com#b" -
(?://|#)明确限定注释起始符,不碰/a\/b/这类斜杠 -
\s*(.+)$捕获注释符后首个非空格字符开始到行尾的所有内容 - 必须关闭
.\n(即不勾选 “. matches newline”),否则.+会跨行吞掉下一行代码
示例:对 Python 文件执行该正则,# 初始化连接会被捕获,而host = "api.com" # fallback中fallback不会被命中——因为#不在行首。
块注释提取:用/\*([\s\S]*?)\*/并启用跨行匹配
JavaScript 或 CSS 中的/* ... */常跨多行,必须点亮查找面板右下角的.\n图标,否则[\s\S]*?失效:
-
/\*和\*/是字面量,需转义 -
[\s\S]*?是唯一可靠写法,显式覆盖换行符,?确保非贪婪,避免从第一个/*吃到文件末尾最后一个*/ - 若文件语法是
Plain Text,该正则可能误匹配字符串内的"/* inside string */",先按Ctrl+Shift+P→Set Syntax: JavaScript再操作 - HTML 的
<!-- -->需换正则:<!--([\s\S]*?)-->,且同样依赖语法识别
提取后怎么用?别直接 Replace All
提取只是第一步,后续动作得手动控制:
- 点击
Find All后,所有匹配项高亮,按Ctrl+Shift+L(Win/Linux)或Cmd+Shift+L(macOS)将每个匹配转为独立光标,再Ctrl+C复制全部注释文本 - 如果只想导出纯文本,新建标签页粘贴,再用
^\s*$(勾选.\n)删空行,用\s+$删行尾空白 - 切记:不要对原始文件直接
Replace All,尤其当注释里有TODO或FIXME时,它们常嵌在代码逻辑中,提取≠可删除
真正容易被忽略的是语法上下文——同一段正则在JSON文件里根本不会触发注释匹配(JSON 默认无注释),而在JSONC语法下才生效;没切对语法,提取结果全是错的。
















