Excel VBA正则expression式使用*(星号)+终点匹配整个string

为什么以下返回“ DATA ”而不是“_DATA_5252014_”?

Dim regEx As New RegExp regEx.Global = True regEx.Pattern = "_DATA_*_" Name = "ECMOSSO_DATA_12312013_RESULTS_TBL" MsgBox regEx.Execute(Name)(0).Value 

我猜文档表明它匹配*之前的内容,但我总是觉得这个正则expression式会产生“_DATA_12312013_”而不是“ 数据 ”。 有没有办法完成我想要的?

您目前正在匹配下划线,即前面的 “零个或多个”时间。

相反,使用标记.*任何单个字符 “除了换行符”)。 贪婪的*操作符会射击到string的末尾,然后回溯到最后一个下划线,所以您想要使用*? 对于非贪婪的匹配意味着“零个或更多 – 优选尽可能less”。

 _DATA_.*?_ 

现场演示