You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA中正则表达式无法匹配多段内容的原因及解决方法

问题原因

VBA内置的RegExp对象默认关闭全局匹配模式,仅返回第一个符合规则的匹配结果,这就是你代码只能拿到第一段内容的核心原因。

修正方案

只需要在正则配置部分新增.Global = True开启全局匹配即可,完整可运行代码如下:

' 注意使用前请先在VBA编辑器的「工具-引用」中勾选「Microsoft VBScript Regular Expressions 5.5」
Message = ":16R:SECM :22H::CRDB//DEBT :35B:IS 123!!! :98A::YD//2021097 :16S:SECM :16R:SECM :98A::POST//2021027 :98A::YD//2021097 :16S:SECM"
Dim mRegExp As RegExp
Set mRegExp = New RegExp
count_num = 0
With mRegExp
    .Pattern = ":16R:SECM[\s\S]+?:16S:SECM"
    .Global = True ' 开启全局匹配,返回所有符合条件的结果
    .IgnoreCase = False ' 当前场景首尾标记大小写固定,关闭即可
    Set matchs = .Execute(Message)
    For Each matchpart In matchs
        MsgBox matchpart.Value
        count_num = count_num + 1
    Next
    MsgBox count_num ' 最终输出为2,匹配两段内容
End With

内容的提问来源于stack exchange,提问作者yyy991

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:39:03