Office 查找替换通配符规则与 VBA 正则表达式替换

Office 通配符模式(不是正则)

Word / Excel 的查找替换里勾选”使用通配符”后,支持的是简化版匹配规则,和标准正则不同:

通配符含义示例
*任意多个字符sh_* 匹配 sh_ 开头的所有内容
?单个任意字符sh_? 匹配 sh_ 加一个字符
[0-9]数字字符类匹配一个数字
[A-Za-z]字母字符类匹配一个字母
[!a-z]排除字符类匹配不是 a-z 的字符
@前一元素重复一次或多次(相当于 +[0-9]@ 匹配连续数字
\1引用第一个捕获组保留匹配部分

** 在 Office 里没有特殊含义,不会”更强匹配”,用一个 * 即可。

常用通配符替换示例

提取字母部分(去除数字)

查找:  ([A-Za-z]*)([0-9]*)
替换: \1

\1 保留第一个括号里的内容(字母部分),丢弃数字。

匹配 sh_ 开头

sh_*

* 匹配后面任意内容(包括空)。

只匹配 sh_ 后跟数字

sh_[0-9]@

@ 在 Word 通配符里相当于正则的 +,表示重复一次或多次。

Word 删除多余空行

查找:  ^13^13
替换: ^13

^13 是 Word 里的段落标记(回车符),两个连续段落标记替换成一个即可删除空行。

VBA 调用真正的正则表达式

Excel 原生不支持正则,但可以通过 VBA 调用 VBScript.RegExp 引擎:

Function RegReplace(text As String, pattern As String, replacement As String) As String
    Dim re As Object
    Set re = CreateObject("VBScript.RegExp")
    re.Global = True
    re.IgnoreCase = False
    re.Pattern = pattern
    RegReplace = re.Replace(text, replacement)
End Function

保存后在单元格里直接用:

=RegReplace(A1,"\d+","")

这才是标准正则(支持 \d\s+? 等)。

打开 VBA 编辑器:

  1. Excel → Alt + F11
  2. 插入 → 模块
  3. 粘贴上面的函数
  4. 保存,回到工作表使用

Power Query(进阶)

Excel 内置 Power Query 的 M 语言支持部分文本处理:

// 提取所有数字
Text.Select([Column], {"0".."9"})

// 删除数字
Text.Remove([Column], {"0".."9"})

不如正则灵活,但不需要写 VBA,适合简单的批量清洗。

选择建议

场景推荐方式
简单前缀/后缀匹配Word/Excel 通配符
标准正则(\d\w、捕获组)VBA + VBScript.RegExp
大量数据批量清洗Power Query
复杂逻辑处理后粘回 ExcelVS Code / Notepad++ 处理后导入