为什么以下返回" 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 "。有没有办法完成我想要的东西?
答案 0 :(得分:2)
您目前正在匹配下划线,前面的 - "零或更多"倍。
相反,请使用令牌.*
(任何单个字符"除了换行符#34;)。贪婪的*
运算符会向字符串的末尾开始,然后回溯到最后一个下划线,这样您就可以使用*?
来表示non-greedy匹配含义"零或更多 - 最好尽可能少"。
_DATA_.*?_