【问题标题】:Excel VBA RegEx Using * (asterik) + End-Points to Match Entire StringExcel VBA RegEx使用*(星号)+端点匹配整个字符串
【发布时间】:2015-03-17 11:28:21
【问题描述】:

为什么下面的返回“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”。有没有办法完成我想要的?

【问题讨论】:

    标签: regex excel vba


    【解决方案1】:

    您当前正在匹配前面的——“零次或多次”下划线。

    改为使用标记.*任何单个字符“除了换行符”)。贪婪的* 操作符将射到字符串的末尾,然后回溯到最后一个下划线,因此您可能希望使用*? 进行non-greedy 匹配,意思是“零或更多——最好尽可能少”。

    _DATA_.*?_
    

    Live Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 2023-03-26
      • 2016-02-10
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 2014-08-05
      相关资源
      最近更新 更多