我想匹配字符串"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)
请参阅另一个演示