Sublime Text正则查找框需先按Ctrl+H(Windows/Linux)或Cmd+H(macOS)打开替换面板,再点击右下角.*按钮启用PCRE模式;未启用时所有输入均作字面量处理。

Sublime Text 的正则查找框怎么打开?
按 Ctrl+H(Windows/Linux)或 Cmd+H(macOS)直接呼出替换面板,再点右下角的 .* 按钮启用正则模式。这个按钮是开关——没点亮时所有输入都当字面量处理,哪怕你写了 \d+ 也不会匹配数字。
为什么 \n 在替换栏不换行?
Sublime 的替换字段不识别 \n 作为换行符,它只认 \n 字面量(即两个字符:反斜杠 + n)。真要插入换行,得用 \n ——注意:这是 Sublime 自己的转义规则,和搜索时的 \n 含义不同。
- 搜索时写
\n→ 匹配真实换行符(LF) - 替换时写
\n→ 插入一个换行符 - 替换时写
\\n→ 插入两个字符:\n
例如把逗号分隔的列表转成每行一个:
apple,banana,cherry
搜索:,(?!$)(匹配非行尾的逗号)
替换:\n
结果:
apple banana cherry
如何用捕获组重排文本结构?
用小括号 () 定义捕获组,替换时用 $1、$2 引用。注意:Sublime 不支持 \1 这种反向引用写法,必须用美元符号前缀。
常见场景:把 firstName: John, lastName: Doe 转成 Doe, John:
- 搜索:
firstName:\s*(\w+),\s*lastName:\s*(\w+) - 替换:
$2, $1
如果想保留原始空格风格,可把 \s* 改成 [ \t]* 更明确;另外注意 \w 不匹配中文,要处理中文名得换成 [\w\u4e00-\u9fa5]。
替换时怎么避免误伤注释或字符串?
Sublime 本身没有语法上下文感知能力,正则不会自动跳过引号内或 // 后的内容。真要安全替换,得靠更精确的模式约束。
比如只想替换未被引号包裹的 true,避免改掉 "true" 或 'true':
- 搜索:
(?
解释:(? 是负向先行断言,确保前面不是单/双引号;(?!["']) 是负向后行断言,确保后面也不是。但注意:这种写法在跨行字符串或嵌套引号场景仍会失效——Sublime 正则不支持平衡组,复杂结构建议先手动定位范围再操作。
真正容易被忽略的是作用域限制:默认正则对整个文件生效。若只想处理当前选中区域,请先选中文本再按 Ctrl+H,面板左下角会显示 In Selection 提示——否则一不小心就全局替换了。










