Sublime Text正则模式需手动启用:点击查找面板右下角.*按钮或按Alt+R(Win/Linux)/Cmd+Alt+R(macOS),图标变蓝才生效;^和$默认匹配每行首尾,跨平台建议用\R或(?m);捕获组仅支持$1~$9,不支持命名组;\s不匹配全角空格,需用\u3000等显式指定。

Sublime Text 本身没有内置的正则实时校验面板,但通过查找面板 + 正确开关组合,就能实现「写完即看」的近实时反馈——关键不是装插件,而是别漏掉那几个必须点的按钮。
怎么确认正则模式真的打开了
很多人写了\d+却没高亮,第一反应是正则写错了,其实是.*按钮根本没点亮。这个按钮在查找面板右下角,Windows/Linux 是灰色图标,macOS 是.*文字;它不亮,所有元字符都当普通字符处理。
- 快捷键更可靠:Windows/Linux 按
Alt+R,macOS 按Cmd+Alt+R,直接切换正则开关 - 如果按了
Ctrl+F出来的是替换面板(带「Replace」标签),得先点回「Find」标签页,否则.*按钮不可见 - 验证是否生效:输入
^,然后按Alt+Enter(Find All),如果只匹配到每行开头(不是整个文件开头),说明正则已启用且多行模式正常
为什么^和$总不按预期工作
这不是 bug,是 Sublime 默认行为:它们匹配的是「每行首尾」,不是整个文档起止。尤其在 Windows 粘贴文本里,\r\n会让$卡在\r前,看起来像没匹配到行尾。
- 跨平台兼容写法:
^#.*$→ 改成^#.*(?=\r?\n|$),显式声明行尾边界 - 想强制匹配全文开头/结尾?用
\A和\Z(RE2 引擎支持,v4+ 默认启用) - 中文界面下更易出问题:某些汉化插件会干扰换行符识别,临时切回「Plain Text」语法(
Ctrl+Shift+P→Set Syntax: Plain Text)再试
捕获组调试:不用外部工具也能验证分组是否正确
Sublime 不显示$1内容预览,但能靠替换结果反推——这是最快速、最贴近真实使用的验证方式。
- 查找框输入:
(\d{4})-(\d{2})-(\d{2}) - 替换框输入:
$1/$2/$3,然后点Replace All - 如果
2023-12-25变成2023/12/25,说明分组提取成功;如果变成空或原样,说明括号没包对,或者用了非捕获组(?:...) - 注意:
$0是整个匹配,$1~$9是前九个捕获组,$10无效;命名组(?<year>\d{4})不被支持
\s匹配不到全角空格?那是它本来就不该匹配
\s 只认 ASCII 空白符(\t\n\r\f\v 和半角空格),对中文全角空格(U+3000)、不间断空格(U+00A0)完全无感——这在清洗中英文混排文本时,是最隐蔽的断裂点。
- 查全角空格:直接复制一个进查找框,或输入
\u3000 - 批量清理混合空白:用正则
[ \t\n\r\f\v\u3000\u00A0\u2000-\u200B\u2028\u2029]+替换为单个半角空格 - 想保留段落空行?把上面正则改成
[ \t\r\f\v\u3000\u00A0\u2000-\u200B\u2028\u2029]+(?=\S),只清理「后面紧跟文字」的空白块
真正卡住人的从来不是正则语法本身,而是 Sublime 对换行符、空白符、编码的隐式假设——每次匹配失败,先问自己:我是不是在用 Unix 的正则逻辑,处理 Windows 的 \r\n,还混着中文全角空格?


















