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

时间:2016-07-21 19:53:02

标签: regex string vba

我想在字符串“one 234 two 449 three 775 f4our”中匹配“775”(代表最后3位数字与未知总出现次数)< / strong>,“f4our”表示未知数量的字符(字母,数字,空格,但连续不是3位或更多位数)。

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

有没有办法使用 VBA正则表达式

来实现这一目标

1 个答案:

答案 0 :(得分: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