【问题标题】:vba regular expression last occurrencevba 正则表达式最后一次出现
【发布时间】:2016-07-21 19:53:02
【问题描述】:

我想匹配字符串 “一 234 二 449 三 775 f4our”中的 “775”(表示最后 3 位数字,总出现次数未知) ,其中 "f4our" 表示未知数量的字符(字母、数字、空格,但不是连续 3 个或更多数字)。

我想出了正则表达式 "(\d{3}).*?$" 认为 "?" 就足以得到 775 而不是 234,但这似乎不起作用。

有没有什么方法可以使用 VBA 正则表达式来实现这一点?

【问题讨论】:

    标签: regex string vba


    【解决方案1】:

    请注意,(\d{3}).*?$ 仅匹配并捕获前 3 个连续数字并将其捕获到组 1 中,然后匹配除换行符之外的任何 0+ 字符,直到字符串末尾。

    您需要获取字符串末尾的 3 位数块,后面的任何地方都没有 3 位数块。

    您可以使用否定前瞻(?!.*\d{3}) 对匹配施加限制:

    \d{3}(?!.*\d{3})
    

    请参阅regex demo。或者 - 如果将 3 位数字作为整个单词匹配:

    \b\d{3}\b(?!.*\b\d{3}\b)
    

    another demo

    【讨论】:

      猜你喜欢
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-14
      • 1970-01-01
      • 2017-08-15
      相关资源
      最近更新 更多