在 AI 辅助写作的时代,我们经常会把 ChatGPT、Claude 或 DeepSeek 生成的内容复制到 Word 文档中。
但你有没有发现一个令人头秃的细节?
AI 生成的中文内容,往往会在“中文”和“英文/数字”之间强行加上一个空格。
在 Word 中,Word 本身就会自动在视觉上调整中西文间距。如果原本就有空格,再加上 Word 的自动调整,间距就会变得非常大,显得稀疏且不专业。
千万不要手动一个一个去删除空格! 今天分享一个 Word 的“通配符”替换大法,3 秒钟解决几十页文档的格式问题。
核心原理:Word 通配符 (Wildcards)
我们需要利用 Word 的高级查找替换功能,通过“正则表达式”精准定位那些夹在中文和英文中间的空格,并将其删除。
准备工作
- 打开 Word 文档,按下
Ctrl + H打开“查找和替换”。 - 点击左下角的 “更多 (More) »” 按钮。
- 关键一步:必须勾选“使用通配符 (Use wildcards)”(如果不勾选,下面的代码无效)。
场景一:删除“中文+空格+英文/数字”
这是最常见的情况,比如把 测试 Test 变成 测试Test。
- 查找内容:
([一-﨩])( )([a-zA-Z0-9])
- 替换为:
\1\3
代码以此解释:
([一-﨩]):代表任意一个汉字(这是第1组数据)。( ):代表中间那个讨厌的空格(这是第2组数据)。([a-zA-Z0-9]):代表任意英文字母或数字(这是第3组数据)。\1\3:意思是只保留第1组(汉字)和第3组(英文),扔掉第2组(空格)。
场景二:删除“英文/数字+空格+中文”
有时候空格出现在英文后面,比如 Word 通配符 变成 Word通配符。
- 查找内容:
([a-zA-Z0-9])( )([一-﨩])
- 替换为:
\1\3
进阶技巧:如何避开”图 1”、”表 2”?(2.10.2026修改)
用上面的方法批量删除空格后,你可能会发现一个尴尬的问题:
“图 1”变成了”图1”,”表 2”变成了”表2”。
这些图表标题里的空格其实是必要的,删掉之后反而不符合规范了。那怎么办?能不能让替换功能”聪明一点”,只删正文的空格,跳过图表标题?
遗憾的是,Word 的通配符功能无法直接识别”样式”。也就是说,你写不出一个正则表达式来表示”查找空格,但前提是它不在’图表标题’样式中”。
不过别担心,我们有两种变通方案:一种是 “保护法”(分三步走,适合偶尔用一次),另一种是 “VBA 宏”(写一次代码,终身受用)。
方案一:”保护法”(分三步走,最稳妥)
这个逻辑是:先把”图表标题”里的空格变成一个极其特殊的字符(保护起来),然后执行删除空格操作,最后再把特殊字符变回空格。
第一步:保护图表标题中的空格
- 按
Ctrl + H打开查找和替换。 - 点击”更多” -> “格式” -> “样式”,选择你的图表标题样式(通常叫 “题注” 或 “Caption”)。
- 查找内容输入:
^32(这是空格的代码)或者直接敲一个空格。 - 替换为输入:
##########(或者任何你正文中绝对不会出现的乱码符号)。 - 点击 “全部替换”。
此时,所有图表标题里的空格都变成了乱码,而正文的空格没变。
第二步:使用正则删除正文的中英文空格
- 取消刚才设置的样式格式(在查找框点击”不限定格式”)。
- 勾选 “使用通配符”。
- 执行两次替换(分别处理”中 空 英”和”英 空 中”):
情况 A:中文 [空格] 英文/数字
- 查找内容:
([一-﨩])( )([a-zA-Z0-9]) - 替换为:
\1\3 - 点击 “全部替换”。
情况 B:英文/数字 [空格] 中文
- 查找内容:
([a-zA-Z0-9])( )([一-﨩]) - 替换为:
\1\3 - 点击 “全部替换”。
代码解释:
[一-﨩]:代表几乎所有的常用汉字。[a-zA-Z0-9]:代表所有英文字母和数字。( ):括号代表分组,\1\3的意思就是保留第1组(中文)和第3组(英文),丢弃中间的第2组(空格)。
第三步:还原图表标题
- 取消勾选 “使用通配符”。
- 查找内容输入:
########## - 替换为输入:
^32(或者敲一个空格)。 - 点击 “全部替换”。
方案二:VBA 宏代码(一键搞定,推荐)
如果你经常需要做这个操作,手动搞太累了。可以用 VBA 代码,它可以判断段落样式。
- 按
Alt + F11打开 VBA 编辑器。 - 点击
插入->模块。 - 粘贴以下代码:
Sub RemoveSpaceBetweenChineseAndEnglish()
Dim para As Paragraph
Dim rng As Range
' 遍历文档中的每一个段落
For Each para In ActiveDocument.Paragraphs
' 排除样式名称包含 "题注" 或 "Caption" 的段落
' 请根据你Word里的实际样式名修改下面的 "题注"
If InStr(para.Style, "题注") = 0 And InStr(para.Style, "Caption") = 0 Then
Set rng = para.Range
With rng.Find
.ClearFormatting
.Replacement.ClearFormatting
.MatchWildcards = True
' 情况1: 中文 空格 英文/数字
.Text = "([一-﨩])( )([a-zA-Z0-9])"
.Replacement.Text = "\1\3"
.Execute Replace:=wdReplaceAll
' 情况2: 英文/数字 空格 中文
.Text = "([a-zA-Z0-9])( )([一-﨩])"
.Replacement.Text = "\1\3"
.Execute Replace:=wdReplaceAll
End With
End If
Next para
MsgBox "清理完成!已跳过图表标题。"
End Sub
- 按
F5运行即可。
注意:代码中的 InStr(para.Style, "题注") 是关键。如果你的图表标题样式名叫”图表名”或者其他名字,请把代码里的 "题注" 改成你实际的样式名称。
总结
通过这个小技巧,你可以放心地从 AI 复制大段文字,然后一键清洗格式。
记住口诀:
Ctrl + H- 勾选“使用通配符”
- 输入
([一-﨩])( )([a-zA-Z0-9]) - 替换为
\1\3
效率就是生命,希望这个技巧能帮到正在写论文或报告的你!
Leave a comment