Sublime Text 提取键值对需用正则捕获组并手动整理:单行用 ^([^\s:]+):\s*(.*)$,多行值需显式捕获缩进;必须启用正则模式、处理BOM/空格/编码,提取后用Alt+Enter选中复制。

Sublime Text 无法直接解析键值对结构,所有“提取”都依赖正则捕获组 + 手动整理;不写对锚定和换行处理,结果会漏行、跨键或为空。
用 ^([^\s:]+):\s*(.*)$ 匹配单行键值对
这是最稳妥的单行提取起点:键必须以非空白字符开头、不含冒号,值从冒号后第一个非空白开始直到行尾。
- 必须启用
Regular Expression(右下角 .* 图标亮起) - 不能用
\w+做键名——它不匹配build date或api-key这类含空格/连字符的键 - 值部分用
.*而非.*?,因为 Sublime 的 RE2 引擎不支持非贪婪量词,.*?会报错Invalid regular expression - 若源文本有 BOM 或行首空格,加
^\s*([^\s:]+)\s*:\s*(.*)$更健壮
处理缩进式多行值要用 ^([^\s:]+):\s*([^\n]*(?:\n\s+[^\n]*)*)
当值跨多行且后续行以空格或制表符开头(如 YAML 或某些日志格式),单行正则会断在第一行,必须显式捕获缩进行。
-
[^\n]*匹配键行剩余内容(冒号后到换行前) -
(?:\n\s+[^\n]*)*是非捕获组,重复匹配“换行+至少一个空白+非换行内容” - 必须勾选
Regular Expression并确保re.MULTILINE生效(Sublime 默认开启) - 别用
.*替代[^\n]*——它不会停在换行处,会一路吞到下一个键,导致值污染
提取后复制只能靠 Alt+Enter(Windows/Linux)或 Cmd+Enter(macOS)
Find All 后只有带括号的捕获组内容能被精准选中;不按这个快捷键,复制出来的是整行或关键词片段。
- 输入正则后点
Find All,光标会停在每个捕获组开头 - 立刻按
Alt+Enter(不是Enter),所有括号内内容被多光标选中 -
Ctrl+C复制 →Ctrl+N新建文件 →Ctrl+V粘贴,结果就是纯键值对列表,每项一行 - 如果粘贴后出现空行,用
^$\r?\n替换为空(勾选正则)快速清理
跨文件提取键值对必须分两步走
Find in Files(Ctrl+Shift+F)只输出 文件名:行号:整行内容,无法直接分离键和值——得先捞出原始行,再二次正则提取。
- 第一步:用
Ctrl+Shift+F搜^[^\s:]+:\s*,范围限定在目标目录(如./config/),避免扫全盘 - 搜索完成后
Ctrl+A全选结果 →Ctrl+C复制 → 粘贴到新文件 - 第二步:在这个新文件里,用
^([^\s:]+):\s*(.*)$配合Alt+Enter提取键和值 - 注意:如果原始文件编码不是 UTF-8(比如 GBK),中文键名会乱码匹配失败,先用
File → Reopen with Encoding → UTF-8
真正容易被忽略的不是正则语法,而是数据上下文:缩进是否统一、键名是否含空格、换行符是 \n 还是 \r\n、有没有隐藏 BOM——这些都会让看似正确的正则返回空结果。

















