本文 首发于 🍀 永浩转载 请注明 来源

Word技巧:如何使用正则表达式高效替换

1. 引言

在日常生活中,我们经常需要使用 Word 的查找与替换功能来处理一些简单数据。如果数据相对复杂,我们就需要借助 Word 的正则表达式。关于正则表达式,我们先来定义以下术语:

  • 通配符:指的是可以用来代表一个或多个字的字符。例如,星号 * 通常代表一个或多个字符,问号 ? 通常代表单个字符;
  • 正则表达式:指的是可以用来查找和替换文本模式的文本字符和通配符组合。文本字符指的是必须存在于目标文本字符串中的文本,通配符指的是目标字符串中可能各不相同的文本。
描述类型示例
任一字符?s?t 可找到 “sat” 和 “set”
任何字符串*s*d 可找到 “sad” 和 “started”
单词开头<<(inter) 可找到 “interesting” 和 “intercept”,但找不到 “splintered”
单词结尾>(in)> 可找到 “in” 和 “within”,但找不到 “interesting”
指定字符之一[ ]w[io]n 可找到 “win” 和 “won”
此范围内的任一字符[-][r-t]ight 可找到 “right” 和 “sight”,范围必须是升序
除了括号内范围中的字符之外的任一字符[!x-z]t[!a-m]ck 可找到 “tock” 和 “tuck”,但找不到 “tack” 或 “tick”
前一个字符或表达式的 n 个匹配项{n}fe{2}d 可找到 “feed”,但找不到 “fed”
前一个字符或表达式的至少 n 个匹配项{n,}fe{1,}d 可找到 “fed” 和 “feed”
前一个字符或表达式的 n 到 m 个匹配项{n,m}10{1,3} 可找到 “10”、“100” 和 “1000”
前一个字符或表达式的一个或多个匹配项@lo@t 可找到 “lot” 和 “loot”

2. 内容转置

本节介绍了如何使用正则表达式转置姓名、转置日期。

2.1 转置姓名

第一步,启动 Word,打开一个新的空白文档。复制此文字,将它粘贴到该文档中。

Josh Barnhill
Doris Hartwig
Tamara Johnston
Daniel Shimshonig

第二步,在「开始」选项卡上的「编辑」组中,单击「替换」以打开「查找和替换」对话框。

第三步,选中「使用通配符」复选框。若没有看到「使用通配符」复选框,请单击「更多」,然后选中该复选框。没有选中该复选框时,Word 会将通配符视作文本。

第四步,在「查找内容」框中键入 `(<*>) (<*>)`。注:两组括号之间包含了空格。

第五步,在「替换为」框中,键入 `\2, \1`。注:在逗号和第二个斜杠之间包含了空格。然后单击「全部替换」。Word 会转置这些姓名并使用逗号分隔它们。

![img](https://cdn.jsdelivr.net/gh/swimminghao/picture@main/img/2022/10/31/xFEc5V.png)

关于正则表达式,在第一个表达式 `(<*>) (<*>)` 中:

- 星号 `*` 代表任意字符串,会返回单词中的全部文本;
- 小于和大于符号 `< >` 分别标记了每个单词的开始和结束。它们确保搜索会返回单个单词;
- 它们之间的括号和空格将单词拆分成不同的组,即 (第一个单词) 和 (第二个单词)。

在第二个表达式 `\2, \1` 中:

- 斜杠 `\` 与数字放在一起充当占位符;
- 第一个占位符后的逗号,是在两个被转置的姓名之间插入想添加的标点符号;
- 该表达式含义是,写入第二个单词,添加逗号,写入第一个单词。

### 2.2 转置日期

第一步,启动 Word,打开一个新的空白文档。复制此文字,将它粘贴到该文档中。注意粘贴时只保留文本。

28th May 2003 1st Jun 2008 2nd Feb 2010 3rd Apr 2020


第二步,按照上文描述打开「查找和替换」对话框,并选中「使用通配符」复选框。

第三步,在「查找内容」框中键入 `([0-9]{1,2})([dhnrst]{2}) (<[ADFJMNOS]*>) ([0-9]{4})`。

第四步,在「替换为」框中,键入 `\3 \1, \4`。注:确保在每个字符集之间插入空格。

第五步,单击「全部替换」。

![img](https://cdn.jsdelivr.net/gh/swimminghao/picture@main/img/2022/10/31/HuEomc.png)

关于正则表达式,第一个表达式 `([0-9]{1,2})([dhnrst]{2}) (<[ADFJMNOS]*>) ([0-9]{4})` 的作用是将日期分解为四个部分,由多组括号来表示。具体来看:

- 第一部分 `([0-9]{1,2})`。数字范围 `[0-9]` 匹配第一个模式中的一位数数字。因为日期可以由两个数字组成,我们让搜索返回一位数或两位数的日期 `{1,2}`;
- 第二部分由序数词组成。序数词包含 "th"、"nd"、"st" 和 "rd",因此我们将这些字母添加到范围 `[dhnrst]` 中。因为序数词总是由两个字母组成,我们将字母计数限制为 2,即 `([dhnrst]{2})`;
- 第三部分是查找月份名的文本字符和通配符。所有月份名都以这些大写字母开头 "ADFJMNOS"。我们不知道每个大写字母后有多少个字符,因此我们在它们之后使用星号 `*`。我们只对月份名本身感兴趣,因此我们使用 `<` 和 `>` 字符来将结果限制为单个单词,即 `(<[ADFJMNOS]*>)`;
  - 星号 `*` 代表任意字符串,会返回单词中的全部文本;
  - 小于和大于符号 `< >` 分别标记了每个单词的开始和结束,它们确保搜索会返回单个单词;
- 第四部分为年。我们使用相同的数字范围,但这次我们将计数限制为四个字符 `([0-9]{4})`。

在第二个表达式 `\2, \1` 中:

- 斜杠 `\` 与数字放在一起充当占位符;
- 第一个占位符后的逗号在两个被转置的姓名之间插入想添加的标点符号;
- 该表达式的含义是,写入第二个单词,添加逗号,写入第一个单词。

 

## 3. 批量换行

本节介绍了如何使用正则表达式将 "题号" 替换成 "题号、+换行" 和将选项 "B." 替换成 "换行符+B."。

### 3.1 题号后加换行符

第一步,启动 Word,打开一个新的空白文档。复制此文字,将它粘贴到该文档中。

5、风险管理的主体是( ) A、法人 B、个人 C、任何组织和个人 D、组织 6、风险管理效益的大小,取决于( ) A、是否能以最小风险成本取得最大安全保障 B、是否能以最小风险成本取得最小安全保障 C、是否能以最大风险成本取得最小安全保障 D、是否能以最大风险成本取得最大安全保障 7、风险管理的方法分为( ) A、控制型和财务型 B、自留型和转移型 C、控制型和转移型 D、自留型和控制型 8、利用签订销售、建筑、运输合同处理风险的风险管理方法是( ) A、财务型保险转移风险 B、财务型非保险转移风险 C、避免型风险管理 D、控制型风险管理


第二步,按照上文描述打开「查找和替换」对话框,并选中「使用通配符」复选框。

第三步,在「查找内容」框中键入 `(<[0-9]{1,2}>、)`。

第四步,在「替换为」框中,键入 `\1^p`。注:确保在每个字符集之间插入空格。

第五步,单击「全部替换」。

![img](https://fig-lianxh.oss-cn-shenzhen.aliyuncs.com/%E4%BD%BF%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%92%8C%E9%80%9A%E9%85%8D%E7%AC%A6%E5%BF%AB%E9%80%9F%E6%9B%BF%E6%8D%A2_%E6%9D%8E%E5%B2%B8%E7%91%B6_Fig03.png)

关于正则表达式,在第一个表达式 `(<[0-9]{1,2}>、)` 中:

- 小于和大于符号 `< >` 分别标记了每个单词的开始和结束;
- `[0-9]` 代表匹配从 0 到 9 的数字;
- `{1,2}` 代表数字有 1 到 2 位。如果是 `{1,7}`,就是数字有 1 到 7 位;
- 顿号 `、` 则就代表字符串 "、"。

在第二个表达式 `\1^p` 中:

- `\1` 代表第一个变量;
- `^p` 代表段落标记符号。

### 3.2 选项前加换行符

第一步,按照上文描述打开「查找和替换」对话框,并选中「使用通配符」复选框。

第二步,在「查找内容」框中键入 `(<[BCD]{1,1}>)`。

第三步,在「替换为」框中,键入 `^p\1`。注:确保在每个字符集之间插入空格。

第四步,单击「全部替换」。

![img](https://cdn.jsdelivr.net/gh/swimminghao/picture@main/img/2022/10/31/M6LzD4.png)

## word手动目录添加点点

## 手动目录制作

![](https://cdn.jsdelivr.net/gh/swimminghao/picture@main/img/EGATLv_20221101192832.png)

1. ctrl选中所有2级目录,然后通过标尺上的「左缩进」按钮,来将我们的2级目录缩进一下。
2. 手动添加页码,给每一章和节标题后面添加上页码数。 **当然,这里你可以为你的页码添加括弧,或更多个性化内容**。

![](https://cdn.jsdelivr.net/gh/swimminghao/picture@main/img/54SLTD_20221101193048.png)

3. 在每一章节标题与页码之间,按一下「Tab」键。

![](https://cdn.jsdelivr.net/gh/swimminghao/picture@main/img/HlHA9m_20221101193120.png)

4. 选中所有的目录内容,然后点击「开始」-「段落」-「段落设置」-「制表位」,在「制表位位置」中设置成“42”,这里大家可以查看自己页面中“标尺”来设定具体位置。「对齐方式」设为“居中”。最后,我们选择一种「前导符」,再点击“设置”按钮,确定即可。

![](https://cdn.jsdelivr.net/gh/swimminghao/picture@main/img/KzDzXg_20221101193251.png)