
本教程基于 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+ 左/右键 快速选中⾄⾏⾸或尾部。
上述四个快捷键,配合上述正则表达式,⾜以应付绝⼤多数⽂本快速编辑需求。

发表回复