﻿---
title: "代码编辑器和正则表达式"
date: "2022-11-28"
description: "VS Code高效编辑技巧与正则表达式入门，掌握多行同步编辑和文本匹配替换方法，提升代码编写效率。"
tags:
  - vscode
---

# 代码编辑器和正则表达式

## 代码编辑器

下列方法基于 Visual Studio Code 编辑器，以 macOS 的快捷键作为示例。

通常情况下，在 Windows 中的对应快捷键如下：

- Command → Ctrl
- Option → Alt

### 多行编辑

**同步插入**

按住 `Option` 用鼠标点击任意行可插入多个光标，此时输入内容，多个光标会同步插入。

![多行同步插入](/images/editor-and-regular/多行同步插入.gif)

**同步追加**

选中多行文本，按下 `Option + Shift + I`，此时选中行行尾出现多个光标，输入内容，多个光标会同步追加。

![多行同步追加](/images/editor-and-regular/多行同步追加.gif)

**选中相同文本并同步替换／插入**

选中文本，按下 `Command + D` 会自动选中下一个相同文本并插入一个光标，输入内容，多个光标会同步插入。

按下方向键可以取消选中，此时输入内容不会替换选中的文本。

![选中相同文本并同步替换／插入](/images/editor-and-regular/选中相同字符并同步替换.gif)

### 大小写转换

选中需要转换的单词，按下 `Command + Shift + P` 弹出输入框，输入 `transform` 查看对应命令。

如果全局语言为中文，也可以输入 `转换` 查看对应命令。

![大小写转换](/images/editor-and-regular/regular.png)

### 查找替换

方法一：简单查找／替换

- `Command + F` ：查找
- `Command + Option + F` ：查找并替换

方法二：正则表达式查找／替换

点击查找输入框右侧的第三个按钮或快捷键 `Command + Option + R` 开启正则表达式匹配。

![开启正则匹配](/images/editor-and-regular/regular.png)

## 正则表达式

> [正则表达式 30 分钟入门教程](https://deerchao.cn/tutorials/regex/regex.htm)
> [正则表达式测试工具 regular expressions 101](https://regex101.com/)

### 使用场景

- 支持正则的编辑器内进行查找／替换
- 各种编程语言内置正则相关库

### 基本匹配

- `^`: 匹配字符串的开头
- `$`: 匹配字符串的结尾
- `.`: 匹配任意字符
- `\d`: 匹配数字
- `\D`: 匹配非数字
- `\s`: 匹配空白字符
- `\S`: 匹配非空白字符
- `\w`: 匹配单词字符
- `\W`: 匹配非单词字符
- `
`: 匹配换行符
- `	`: 匹配制表符
- `
`: 匹配回车符

### 字符多选

- `[...]`: 匹配任意一个字符
- `[^...]`: 匹配任意一个不在 [...] 中的字符
- `[a-z]`: 匹配任意一个小写字母
- `[A-Z]`: 匹配任意一个大写字母
- `[0-9]`: 匹配任意一个数字
- `[a-zA-Z]`: 匹配任意一个字母
- `[a-zA-Z0-9]`: 匹配任意一个字母或数字
- `[a-zA-Z0-9_]`: 匹配任意一个字母或数字或下划线
- `[a-zA-Z0-9_\s]`: 匹配任意一个字母或数字或下划线或空格
- `[a-zA-Z0-9_\s一-龥]`: 匹配任意一个字母或数字或下划线或空格或中文
- `[a-zA-Z0-9_\s一-龥\.]`: 匹配任意一个字母或数字或下划线或空格或中文或点

### 重复选择

- `*` 重复零次或更多次
- `+` 重复一次或更多次
- `?` 重复零次或一次
- `{n}` 重复 n 次
- `{n,}` 重复 n 次或更多次
- `{n,m}` 重复 n 到 m 次
- `[a-zA-Z0-9_\s一-龥\.]+`：匹配任意一个字母或数字或下划线或空格或中文或点至少一个
- `[a-zA-Z0-9_\s一-龥\.]*`：匹配任意一个字母或数字或下划线或空格或中文或点至少 0 个
- `[a-zA-Z0-9_\s一-龥\.]?`：匹配任意一个字母或数字或下划线或空格或中文或点至少 1 个
- `[a-zA-Z0-9_\s一-龥\.]{2}`：匹配任意一个字母或数字或下划线或空格或中文或点至少 2 个
- `[a-zA-Z0-9_\s一-龥\.]{2,5}`：匹配任意一个字母或数字或下划线或空格或中文或点至少 2 个至 5 个

### 其他

- 转义
- 分组
- 引用
- 断言
- 贪婪与懒惰

## 正则示例

- 匹配手机号：`^1\d{10}$`
