我想在字符串“one 234 two 449 three 775 f4our”中匹配“775”(代表最后3位数字与未知总出现次数)< / strong>,“f4our”表示未知数量的字符(字母,数字,空格,但连续不是3位或更多位数)。
我提出正则表达式“(\ d {3})。*?$”认为“?”就足以获得 775 而不是 234 ,但这似乎不起作用。
有没有办法使用 VBA正则表达式?
来实现这一目标答案 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