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



我想匹配字符串"one 234 two 449 three 775 f4our"中的"775"(用未知的出现总数表示最后3位数字),其中‘f4our’表示未知数量的字符(字母、数字、空格,但不是一行中的3位或更多数字)。

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

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

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

您需要在字符串末尾获得3位数的区块,而该字符串后面的任何位置都没有3位数的块。

您可以使用负前瞻(?!.*d{3})对匹配进行限制:

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

请参阅regex演示。或者-如果这3个数字要作为一个完整的单词匹配:

bd{3}b(?!.*bd{3}b)

请参阅另一个演示

最新更新