Sublime Text正则替换需手动启用模式:点击.*按钮或按Alt+R(Win/Linux)/Cmd+Alt+R(macOS),右下角显示.*即生效;捕获组引用仅支持\1、\2,不支持$1;跨行匹配需(?s),中文匹配需[\u4e00-\u9fa5]或(?u)\p{Han}。

Sublime Text 的正则替换完全可用,但默认不启用正则模式——必须手动点开 .* 按钮或按 Alt+R(Windows/Linux)/Cmd+Alt+R(macOS),否则输入的 ^、\d、(\w+) 全部当字面量处理。
如何开启并确认正则模式已生效
查找框右下角有个图标按钮,显示 .* 表示正则已开,显示 AB 表示纯文本模式。误关后常见现象:写好 href="([^"]*)" 却搜不到任何链接——其实不是表达式错,是模式没开。快捷键比点图标快得多,建议熟记:
-
Ctrl+H打开替换面板后,立刻按Alt+R切换为正则模式 - macOS 用户注意:
Cmd+Alt+R不是Cmd+R(后者是“重新加载”) - 如果替换了 0 处,先看右下角是不是
.*,再检查表达式是否含未转义的特殊字符(如.想匹配字面点号却没写成\.)
\1、\2 引用捕获组时的常见错误
正则中用 (...) 捕获内容后,在替换栏用 \1 取第一个括号内容,\2 取第二个——但 Sublime Text 不支持 $1 写法,只认反斜杠数字。容易踩的坑:
- 写成
$1或${1}→ 替换结果原样输出$1,不解析 - 捕获组嵌套时,按左括号顺序编号,不是按匹配深度;
((a)(b))中\1是整个ab,\2是a,\3是b - 想在替换里加文字又引用分组?直接拼:把
url("(.*)")替成background-image: url("/static/\1")
常用但易失效的元字符与转义规则
Sublime Text 使用的是 Boost 正则引擎(类似 Perl),大部分语法通用,但部分行为和 JavaScript 或 Python 的 re 模块不同:
-
\s匹配空格、制表符、换行符 —— 但\n在查找框里要写成字面\n,不能敲回车;想匹配真实换行,得在查找框里按Ctrl+Enter(Windows/Linux)或Cmd+Enter(macOS)插入\n字符 -
.默认不匹配换行符;跨行匹配需开启dotall模式:在正则开头加(?s),例如(?s)start(.*?)end - 中文、emoji 等 Unicode 字符可直接写进正则,无需额外修饰符;但
\w默认只匹配 ASCII 字母数字下划线,不包含汉字,要匹配中文请用[\u4e00-\u9fa5]或[\p{Han}](需开启 Unicode 模式:(?u))
真正卡住人的往往不是语法多难,而是模式没开、括号没闭合、或把 \1 写成 $1 这种低级但极难自查的细节——建议每次替换前,先用查找功能(Ctrl+F)验证正则是否真能命中目标文本,再点替换。

















