用 ^s+|s+$ 可一次性清除行首行尾空白:^\s+ 匹配行首一个及以上空白,\s+$ 匹配行尾一个及以上空白,二者用 | 连接;Sublime 中无需 g 标志,勾选 Regular expression 即可全局生效。

用 ^s+|s+$ 一次性清除行首行尾空白
Sublime Text 的正则替换能精准处理这类格式清洗,关键在于匹配逻辑要覆盖「行首任意空白」和「行尾任意空白」两个独立位置。用 ^s+|s+$ 是最直接有效的模式:^ 锚定行首,s+ 匹配一个及以上空白字符(空格、制表符、换行符等),| 表示“或”,s+$ 匹配行尾连续空白。注意不能写成 ^s+|s+$ 加 g 标志——Sublime 不认 JS 风格的全局标志,勾选 “Regular expression” 和 “Whole word” 即可生效。
为什么不用 s* 或 s{1,}
s* 会匹配零个空白,导致每行被替换成空字符串(即整行消失);s{1,} 虽然等价于 s+,但可读性差且无必要。更关键的是:如果某行只有空白(如纯空格或制表符),^s+|s+$ 仍能完整匹配整行并清空——这正是我们想要的。但若误用 ^s*$,它会匹配所有空行,包括本应保留的空行,造成意外删除。
实际替换操作三步到位
打开 Replace 面板(Ctrl+H / Cmd+H),确保开启以下选项:
- 勾选
Regular expression(必须) - 取消勾选
Match case(空白不区分大小写) - 替换框留空(即替换成空字符串)
输入正则:^s+|s+$,点击 Replace All。如果只想处理选中区域,先选中文本再操作,Sublime 默认只作用于选区。
容易忽略的兼容性细节
Windows 换行符是
,Mac 是
,Linux 也是
。Sublime 的 s 在所有平台都包含
、
、 、 ,所以该正则跨平台通用。但如果你手动复制粘贴了带
的文本进来,又没开启 “Show All Characters”,可能误判为空格问题——建议临时开启 View → Show White Space 确认真实字符类型。
真正麻烦的是混合缩进:有些行用空格缩进,有些用 Tab,还有些混用。这种情况下,^s+ 依然有效,但它会把整段缩进全干掉。如果只想清理首尾、保留中间缩进,这个正则完全够用;但如果想规范化缩进(比如全转空格),就得另起一轮操作,不能指望一次正则解决所有排版问题。











