必须转义的字符包括.、*、+、?、(、)等,搜索框启用正则模式时需写成.、*、+、?、(、);反斜杠本身需写成;未启用正则时无需转义。

搜索框里怎么匹配字面意义的. * + ? 等字符
这些符号在正则表达式里有特殊含义,直接输.会匹配任意单个字符,不是真的点号。必须用双反斜杠转义才能当普通字符处理。
-
.→ 写成. -
*→ 写成* -
+→ 写成+ -
?→ 写成? -
(和)→ 分别写成(和) - 想搜一个真正的反斜杠
?得写成\
注意:所有这些转义只在启用了正则模式(.*图标点亮)时才生效;没开正则时,输什么就按字面匹配什么,不需要转义。
替换框里怎么插入换行、制表符或$符号
替换框的转义规则和搜索框不同——它不走正则逻辑,而是用特定序列解释为控制字符或字面量。
-
表示换行符(不是\n) -
表示制表符 -
\表示一个字面反斜杠 -
$表示一个字面美元符号(否则$1会被识别为捕获组引用) - 想输出
$price?得写成$$price,因为第一个$转义第二个
常见错误:在替换框里写
,结果出来的是两个反斜杠加字母n,而不是换行。
为什么$1能用,但或${1}不行
VSCode 用的是 JavaScript 风格的替换语法,捕获组引用只有$1、$2这一种合法写法。
- 写
→ 直接输出文字,不会被解析 - 写
${1}→ 大概率静默失败,或被当作普通字符串 - 写
$1→ 正确引用第一个捕获组内容 -
$&表示整个匹配文本,$$表示一个字面$
如果正则里用了非捕获组(?:...),它不占编号,$1仍指第一个(...)里的内容。
跨文件替换前必须确认的三件事
VSCode 的全局替换没有“预提交 diff”,点下Replace in Files就直接改磁盘,出错很难回滚。
- 先确认右下角显示
Regex标签,且.*图标是蓝色高亮——否则所有转义和分组都无效 - 检查
files to include和files to exclude:默认跳过node_modules,要搜它就得手动清空该字段 - 点击每个匹配项左侧的
▶展开上下文,确认前后几行不是注释或字符串——VSCode 原生不识别语法,foo也挡不住'foo'里的 foo
真正容易被忽略的是:Replace All(右上角单个箭头)只改当前已打开文件的内存副本,不会触碰未打开文件;必须点 Replace in Files(两个重叠文档图标)才算真正落盘。











