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 不匹配中文,要处理中文名得换成 [wu4e00-u9fa5]。
替换时怎么避免误伤注释或字符串?
Sublime 本身没有语法上下文感知能力,正则不会自动跳过引号内或 // 后的内容。真要安全替换,得靠更精确的模式约束。
比如只想替换未被引号包裹的 true,避免改掉 "true" 或 'true':
- 搜索:
(?
解释:(? 是负向先行断言,确保前面不是单/双引号;(?!["']) 是负向后行断言,确保后面也不是。但注意:这种写法在跨行字符串或嵌套引号场景仍会失效——Sublime 正则不支持平衡组,复杂结构建议先手动定位范围再操作。
真正容易被忽略的是作用域限制:默认正则对整个文件生效。若只想处理当前选中区域,请先选中文本再按 Ctrl+H,面板左下角会显示 In Selection 提示——否则一不小心就全局替换了。