必须手动加反斜杠的字符包括.、*、+、?、^、$、(、)、[、]、{、}、|、;其中需写成\,.写成.才能匹配字面点号,未转义时会被当作元字符处理。

Sublime Text 里正则替换失败,八成是没转义特殊字符——不是表达式写错了,是点号.、星号*、括号(这些被当成了字面量。
哪些字符必须手动加反斜杠?
正则中带含义的符号,不转义就匹配不到你想要的内容。比如想匹配文件名里的.,写.会匹配任意字符;想匹配console.log(),不转义.和(),就会误中consoleXlogY这种。
-
.→ 写成.(否则匹配任意单字符) -
*、+、?、^、$→ 全部要加才表示字面值 -
(、)、[、]、{、}→ 想匹配括号本身,必须写成(、)、[等 -
自身要匹配,得写成\(一层给 Sublime 解析,一层给正则引擎)
为什么开了.*模式还匹配不到?
常见现象:写了href="([^"]*)"却高亮为零——不是语法错,是引号里可能含转义符或换行,或者右下角图标其实没真正激活。
- 先确认右下角显示的是
.*(蓝色),不是AB;快捷键 Windows/Linux 是Alt+R,macOS 是Cmd+Alt+R(不是Cmd+R) - 如果 URL 含中文或空格,
[^"]*会卡在第一个中文前——改用[^ "]*或[u4e00-u9fa5ws%&=.-]* - 跨行内容不能靠
.*匹配,默认.不吃换行符;稳妥写法是用[sS]*?,或勾选面板右下角的.(matches newline)选项
$1 不展开?检查捕获组和替换语法
写了 (d{4})-(d{2})-(d{2}) 却在替换框输 //,结果输出字面量——Sublime 只认 $1、$2,不支持 。
- 查找中每对
( )从左到右编号,嵌套也计数:((w+))中外层是$1,内层是$2 - 要输出字面量
$,必须写成$$;写单个$会被忽略或报错 - 替换前务必点
Find All,看高亮是否精准;再按Ctrl+Shift+H开启 Replace Preview,确认$1展开结果是否符合预期 - 命名捕获可用
(?P<year>d{4})</year>,替换时写${year},更易读且支持默认值${year:2026}
中文、换行、边界这些容易漏掉的细节
中文匹配失效、空行删不干净、^/$ 只认全文首尾——这些问题都跟隐式开关或默认行为有关,不是正则本身写错了。
-
^和$默认只锚定整个文本头尾,不是每行;需启用多行模式:点⇧图标,或正则开头加(?m) - Windows 下
$停在前,导致换行残留;统一用R(Sublime 内置通用换行符)替代 - 删空行别用
^s*$(s含,可能吞掉换行符),改用^[ ]*$ - 中文匹配推荐
[u4e00-u9fa5]或(?u)p{Han},但注意文件编码必须是 UTF-8(状态栏右下角确认)
真正卡住人的从来不是正则语法本身,而是 Sublime 对 PCRE 的局部实现差异:它不自动补转义、不默认跨行、$1 和 严格区分、^/$ 的多行语义需要显式开启——这些都不是“高级技巧”,是每次打开替换面板都得条件反射检查的前置动作。











