首页 文章

vba正则表达式最后一次出现

提问于
浏览
2

我想在字符串 "one 234 two 449 three 775 f4our" 中匹配 "775" (表示最后3位数字与未知的总出现次数), "f4our" 表示未知数量的字符(字母,数字,空格,但不包括3位或更多位数)行) .

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

有没有办法用 VBA regular expressions 完成这个?

1 回答

  • 3

    请注意, (\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

相关问题