Excel VBA RegEx使用*(星号)+端点匹配整个字符串

时间:2015-03-17 02:38:24

标签: regex excel vba

为什么以下返回" 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

我想文档表明它与*之前的匹配,但我总是认为这个正则表达式会产生" _DATA_12312013 _"而不是" DATA "。有没有办法完成我想要的东西?

1 个答案:

答案 0 :(得分:2)

您目前正在匹配下划线,前面的 - "零或更多"倍。

相反,请使用令牌.*任何单个字符"除了换行符#34;)。贪婪的*运算符会向字符串的末尾开始,然后回溯到最后一个下划线,这样您就可以使用*?来表示non-greedy匹配含义"零或更多 - 最好尽可能少"。

_DATA_.*?_

Live Demo