Sublime Text正则分组替换需同时满足三条件:启用正则(.*图标变蓝且状态栏显示Regex)、括号成对编号正确、替换用$1而非\1;非捕获组(?:...)不占编号,文件编码必须为UTF-8(右下角确认),否则中文匹配失效。
Sublime Text 的正则分组替换不是“写对括号就能用”,而是必须同时满足三个条件:查找框启用正则、括号成对且编号正确、替换字段用
而非
——缺一不可,否则
会原样输出。
为什么
总是变成字面量,而不是实际内容
根本原因不是正则写错了,而是
图标没点亮,或者括号被当成了普通字符处理。Sublime 只有在正则模式激活时才解析
为捕获组,否则
就是匹配字面的
。
务必点击替换面板右下角的
图标(或按
),让它变蓝
检查右下角状态栏是否显示
,没显示就说明没生效
查找内容里有真实括号(比如想匹配
中的
),必须写成
和
,否则会被误认为捕获组
替换框里写
是唯一合法写法;
或
在旧版 Sublime 里可能报错,新版仅部分支持
,但不推荐依赖
编号怎么数?嵌套括号和非捕获组怎么影响顺序
Sublime 按左括号出现顺序从左到右编号,不管嵌套深度。非捕获组
不占位,这点常被忽略,导致编号错位。
中:
,
,
中:
(
所在的
不生成编号),
始终代表整个匹配结果,不是第一组;别用它替代
如果替换后为空或乱码,先检查编号是否超出实际捕获组数量(比如写了
但只有一对
)
跨行匹配时
为啥总卡住或吞太多
默认
不匹配换行符,强行开启
后,
会贪婪吞到文件末尾,尤其遇到嵌套结构(如
)极易回溯爆炸。
仿Sublime和notepad++编辑器效果
仿Sublime和notepad++编辑器效果
下载
优先用
替代
:明确覆盖所有字符,兼容性更好,Sublime 解析更稳
匹配大括号体时,写
,别用
(即使开了
也不可靠)
函数参数提取慎用
,改用否定字符集:
更安全;含换行时再加
,如
大文件(>5MB)避免跨行正则批量替换,先用
定位范围,再人工分块操作
中文匹配失败,
一个字都找不到
不是正则写错,是 Sublime 加载文件时编码识别失败——UTF-8 无 BOM 的文件在 Windows 下常被当 GBK 解析,中文已乱码,正则自然无效。
看右下角状态栏显示的编码:如果不是
,就
(最稳方案)
避免硬写 Unicode 范围,改用
(覆盖常用汉字),或确保文件已正确加载为 UTF-8 后再用
注释里的中文要单独处理:正则无法“跳过注释”,得先用
筛出非注释行,再操作
别信编辑器界面语言:中文界面 ≠ 文件按 UTF-8 解码,一切以右下角编码标识为准
真正容易被忽略的,是「非捕获组不占编号」和「右下角编码标识必须是 UTF-8」这两点——前者导致
总是空,后者让所有中文正则全失效,且错误现象毫无提示。
$1\1$1$1.*()(\w+)(w+).*Alt+RRegexfunc(x)(\(\)$1\1${1}${1}$1(?:...)(a(b(c)))$1 = abc$2 = bc$3 = c(a(?:b)(c))$1 = acb(?:b)$2 = c$0$1$3().*.. matches newline.*{...{...}...}[\s\S]*?.*?\{[\s\S]*?\}\{.*?\}. matches newline.*?\(([^)]+)\)[\s\S]\(([\s\S]*?)\)Find in Files[u4e00-u9fa5]UTF-8File → Save with Encoding → UTF-8 with BOM[一-龥][u4e00-u9fff]^(?!//|/\*).*$$2