Sublime Text中^和$不匹配行首行尾,因默认多行模式下仅匹配全文起止,且Windows换行符\r\n及中文界面插件可能干扰解析;需勾选.*启用正则、显式用\r?兼容CRLF,或切换为Unix(LF)换行格式。

Sublime Text 中文界面下正则替换为什么 ^ 和 $ 不生效?
因为 Sublime 默认启用「多行模式(Multiline)」但不自动开启「Unix 行结尾识别」,导致 ^ 匹配不到行首、$ 匹配不到行尾——尤其在 Windows 粘贴过来的文本里,换行符是 \r\n,而中文界面插件有时会干扰行结束符解析。
实操建议:
- 先按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Set Syntax: Plain Text切回纯文本模式,排除语法高亮插件干扰 - 打开替换面板(
Ctrl+H),勾选.*按钮(即启用正则),再手动在查找框末尾加\r?:例如把^#改成^#\r?,显式兼容\r\n - 如需严格按行处理,点击右下角换行符标识(如显示
Windows (CRLF)),点它切换为Unix (LF)再试
用 find_all 式逻辑在 Sublime 里批量提取手机号、邮箱等字段
Sublime 没有 find_all 函数,但可通过「查找全部(Alt+Enter)→ 复制匹配项(Ctrl+Shift+P → Copy Selected Text)」模拟。关键是正则必须精准锚定,否则会跨字段粘连。
常见错误现象:用 \d{11} 提取手机号,结果把身份证号、订单号全抓出来。
实操建议:
- 手机号推荐用:
(? —— <code>(? 和 <code>(?!\d)是负向断言,确保前后不是数字 - 邮箱用:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,},注意 Sublime 不支持\b在中文混排时可靠工作,别依赖词边界 - 提取后按
Ctrl+Shift+P输入Convert Case to: Lowercase统一格式,避免后续去重失败
中文标点 + 英文内容混合清洗时,\s 为什么匹配不了全角空格?
\s 只匹配 ASCII 空白符(\t\n\r\f\v 和半角空格),对中文全角空格( ,Unicode U+3000)、不间断空格( )、零宽空格()完全无效——这是汉化界面下最常被忽略的清洗断裂点。
实操建议:
- 查找全角空格:直接复制一个全角空格进查找框(或输入
\u3000),替换为半角空格 - 批量清理混合空白:用正则
[ \t\n\r\f\v\u3000\u00A0\u2000-\u200B\u2028\u2029]+替换为单个半角空格 - 若需保留段落空行,把上述正则改成
[ \t\r\f\v\u3000\u00A0\u2000-\u200B\u2028\u2029]+(?=\S),只匹配「后面紧跟非空白字符」的空白块
替换后出现乱码或中文变方块?检查 file_encoding 和 fallback_encoding
不是正则问题,是编码配置错位。Sublime 在中文系统默认用 GBK 读文件,但你粘贴的原始数据可能是 UTF-8(带 BOM 或无 BOM),导致正则匹配到字节而非字符,替换后解码错乱。
实操建议:
- 打开
Preferences → Settings,在右侧用户设置中添加:"fallback_encoding": "UTF-8",<br>"default_encoding": "UTF-8"
- 已打开的乱码文件,按
Ctrl+Shift+P输入Reopen with Encoding: UTF-8重新加载 - 保存前务必确认右下角显示
UTF-8,而不是Western (Windows 1252)或GBK——后者保存会二次损坏中文
真正卡住人的往往不是正则写法,而是编码层和空白符类型的隐性耦合;调通一次,后面同类清洗可复用整套配置。


















