在 AI 辅助写作的时代,我们经常会把 ChatGPT、Claude 或 DeepSeek 生成的内容复制到 Word 文档中。

但你有没有发现一个令人头秃的细节?

AI 生成的中文内容,往往会在“中文”和“英文/数字”之间强行加上一个空格。

在 Word 中,Word 本身就会自动在视觉上调整中西文间距。如果原本就有空格,再加上 Word 的自动调整,间距就会变得非常大,显得稀疏且不专业。

千万不要手动一个一个去删除空格! 今天分享一个 Word 的“通配符”替换大法,3 秒钟解决几十页文档的格式问题。

核心原理:Word 通配符 (Wildcards)

我们需要利用 Word 的高级查找替换功能,通过“正则表达式”精准定位那些夹在中文和英文中间的空格,并将其删除。

准备工作

  1. 打开 Word 文档,按下 Ctrl + H 打开“查找和替换”。
  2. 点击左下角的 “更多 (More) »” 按钮。
  3. 关键一步:必须勾选“使用通配符 (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 宏”(写一次代码,终身受用)。

方案一:”保护法”(分三步走,最稳妥)

这个逻辑是:先把”图表标题”里的空格变成一个极其特殊的字符(保护起来),然后执行删除空格操作,最后再把特殊字符变回空格。

第一步:保护图表标题中的空格

  1. Ctrl + H 打开查找和替换。
  2. 点击”更多” -> “格式” -> “样式”,选择你的图表标题样式(通常叫 “题注”“Caption”)。
  3. 查找内容输入:^32 (这是空格的代码)或者直接敲一个空格。
  4. 替换为输入:########## (或者任何你正文中绝对不会出现的乱码符号)。
  5. 点击 “全部替换”

此时,所有图表标题里的空格都变成了乱码,而正文的空格没变。

第二步:使用正则删除正文的中英文空格

  1. 取消刚才设置的样式格式(在查找框点击”不限定格式”)。
  2. 勾选 “使用通配符”
  3. 执行两次替换(分别处理”中 空 英”和”英 空 中”):

情况 A:中文 [空格] 英文/数字

  • 查找内容([一-﨩])( )([a-zA-Z0-9])
  • 替换为\1\3
  • 点击 “全部替换”

情况 B:英文/数字 [空格] 中文

  • 查找内容([a-zA-Z0-9])( )([一-﨩])
  • 替换为\1\3
  • 点击 “全部替换”

代码解释

  • [一-﨩]:代表几乎所有的常用汉字。
  • [a-zA-Z0-9]:代表所有英文字母和数字。
  • ( ):括号代表分组,\1\3 的意思就是保留第1组(中文)和第3组(英文),丢弃中间的第2组(空格)。

第三步:还原图表标题

  1. 取消勾选 “使用通配符”。
  2. 查找内容输入:##########
  3. 替换为输入:^32 (或者敲一个空格)。
  4. 点击 “全部替换”

方案二:VBA 宏代码(一键搞定,推荐)

如果你经常需要做这个操作,手动搞太累了。可以用 VBA 代码,它可以判断段落样式

  1. Alt + F11 打开 VBA 编辑器。
  2. 点击 插入 -> 模块
  3. 粘贴以下代码:
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
  1. F5 运行即可。

注意:代码中的 InStr(para.Style, "题注") 是关键。如果你的图表标题样式名叫”图表名”或者其他名字,请把代码里的 "题注" 改成你实际的样式名称。


总结

通过这个小技巧,你可以放心地从 AI 复制大段文字,然后一键清洗格式。

记住口诀:

  1. Ctrl + H
  2. 勾选“使用通配符”
  3. 输入 ([一-﨩])( )([a-zA-Z0-9])
  4. 替换为 \1\3

效率就是生命,希望这个技巧能帮到正在写论文或报告的你!


Leave a comment