
本教程基于 Visual Studio Code(Version: 1.98.2,以下简称 VSCode)编写,⽆需第三⽅插件⽀持,新建⽂档并调出查找(Ctrl
+ F
)即可使⽤。
其中,*
按钮为是否启⽤正则匹配功能,后续均默认启⽤。

其中, *
按钮为是否启⽤正则匹配功能,后续均默认启⽤。
基础功能
正则表达式⽤于⼩代码、批量、快速地查找、替换⽂档内具有特定格式的字符或字符组。
例如,对于如下内容:
www.hujunchi.com
www.hujunchi.com.cn
www.hujunchi.cn
插⼊内容
若希望在特定位置插⼊内容,如在每⾏前加⼊ http://
,只需在 VSCode 的查找中搜索 www
后,点击 Ctrl
+ Shift
+ L
(Windows)或 Cmd
+ Shift
+ L
(Mac),则可选中所有对应内容,从⽽进⾏多⾏操作。
多⾏操作逻辑与单⾏操作逻辑相同,以此例:
- 选中所有
www
内容; - 点击
←
键,使光标位于www
前; - 输⼊待添加字符
http://
。
只需三步,即可在全⽂所有含有 www
的字符串前插⼊ http://
,从⽽实现快速修改⽬的。
修改内容
若希望替换特定内容,如将 hujunchi
修改为 felix
,则:
- 选中所有
hujunchi
内容; - 直接输⼊待修改内容
felix
,实现对原值的替换。
转义字符
转义字符
对于常规内容,直接使⽤对应值进⾏搜索即可,但对于特殊含义字符需使⽤转义字符。例如,将上例三⾏内容合并为单⾏。这个问题可以转化为:替换换⾏符为空。这⾥,换⾏符就⽆法正常输⼊搜索框,因此需使⽤转义字符,常⽤转义字符如下表:
转义字符 | 含义 |
---|---|
\n | 回车符 |
\t | 制表符 |
\\ | 反斜杠 |
因此,上述问题可实现为:选中所有 \n
后,点击 Backspace
或 Delete
实现删除功能。
转义通配符
此外,还有部分转义通配符,⽤于表达“⼀组符号”,例如,希望修改上例中所有英⽂字符为 *
,则需⽤到常⽤通配符:
通配符 | 含义 |
---|---|
\s | 空白字符 |
\S | 非空白字符 |
\d | 数字 |
\D | 非数字 |
\w | 字母、数字、下划线 |
\W | 非字母、数字、下划线 |
因此,上述问题可实现为:选中所有 \w
后,修改为 *
。
⾃定义选择
单字符选择
对于上述通配符 \w
会同时选中字⺟、数字和下划线,考虑到本例中没有多余内容,因此不会导致表现错误,但对于复杂⽂件或⽆法全⽂浏览后决定选择模式的⽂件,该替换显然含义与题⽬原意并不完全匹配(会同时将数字、下划线也替换为 *
)。因此,需要使⽤更为精准的匹配⽅法,可使⽤ []
实现单字符选择,表示匹配任⼀字符。
- 匹配
a
、b
或c
中任⼀字符,可写为[abc]
; - 对于连续
ASCII
码字符,可⽤-
连接,例如,匹配
a
⾄ z
中任⼀字符,可写为
[a-z]
; - 可在
[]
中的第⼀个字符使⽤^
表示⾮含义,如[^a-z]
表示除a
⾄z
外的任意字符; - 若
^
出现在⾮第⼀位,则表示^
字符,如[a-z^]
表示a
⾄z
和^
字符; - 由于
[]
在正则中具有特殊含义,因此若需匹配[
或]
字符,需使⽤转移字符\[
或\]
(对于有特殊含义字符均如此,后续不再赘述); - 通常正则匹配区分⼤⼩写,但在 VSCode 中可通过设置 Aa 设置⼤⼩写是否敏感。
因此,上述匹配所有英⽂字符可更精确的写为 [A-Za-z]
。
多字符选择
单字符选择⽆法检视字符间关系,例如,希望替换 com
和 cn
为 net
,可采⽤两次替换,或使⽤ ()
和 |
实现多字符选择⽅法,表示匹配任⼀组字符。其中,()
⽤于表示数据分组,|
⽤于分隔多组选择内容,因此上例可写为:(com|cn)
。
任意字符
.
表示任意字符。例如匹配 h
+ 任意字符,可写为 h.
。
重复匹配
特定数匹配
对于 [a-z]
,表示匹配 a
⾄ z
的任⼀个字符,但有时需匹配特定数内容。例如:需匹配 n
个特定字符,替换为⼀个 *
,可使⽤ {n}
实现。例如,匹配 3 个数字,可写为:\d{3}
或 [0-9]{3}
。进⼀步的,可使⽤ {n,m}
表示匹配 n
⾄ m
个特定字符。
⼀个或多个
若需匹配不定个数的⼀个或多个字符,可使⽤ {1,}
来实现,同时也可使⽤ +
实现相同功能。例如,匹配⼀个或多个数字,可写为:\d{1,}
或 \d+
。
零个或多个
若需匹配不定个数的零个或多个字符,可使⽤ {0,}
来实现,同时也可使⽤ *
实现相同功能。例如,匹配零个或多个数字,可写为:\d{0,}
或 \d*
。
可选匹配
若需匹配零个或⼀个字符,可使⽤ {0,1}
来实现,同时也可使⽤ ?
实现相同功能。例如,匹配零个或多个数字,可写为:\d{0,1}
或 \d?
。
注意
通常,可选匹配需与其他匹配同时使⽤,例如,匹配⼀串可能包含或不包含⼩数点的数值,可写为\d+\.?\d*
。其中:
\d*
表示⼩数位数具有零个或多个数字。
当然,该匹配写法不唯⼀,除使⽤{}
写法外,亦可写为:\d+(\.\d+)?
,但这两种写法略有不同。对于\d+\.?\d*
可匹配1.
,⽽\d+(\.\d+)?
则不⾏。\d+
表示整数位数具有⼀个或多个数字(因为⽆论整数或⼩数均具有整数部分,因此该部分数值为⼀个或多个);\.?
表示可有⼀个或零个⼩数点(因为.
具有特殊含义,因此需转义);
位置匹配
^
和 $
分别匹配⾏⾸和⾏尾。例如,对于前述例⼦,若想选取⾏⾸的第⼀段英⽂字⺟(如 www
)可写
为:^[A-Za-z]+
。
注意
除此之外,还有捕获、环视等⾼阶⽤途,但使⽤相对较少,可在掌握初阶内容后,再后续学习。
VSCode 中的使⽤
正则表达式配合 VSCode 中的所⻅即所得功能具有特殊的效果。例如,在你匹配到特定内容后:
- 可使⽤
Alt
+ 左/右键 快速跳转⾄单词⾸或尾部; - 可使⽤
Alt
+Shift
+ 左/右键 快速选中⾄单词⾸或尾部; - 可使⽤
Ctrl
+ 左/右键 快速跳转⾄⾏⾸或尾部; - 可使⽤
Ctrl
+Shift
+ 左/右键 快速选中⾄⾏⾸或尾部。
上述四个快捷键,配合上述正则表达式,⾜以应付绝⼤多数⽂本快速编辑需求。
发表回复