正则expression式提取一个Excel函数中的3位数字

我需要从Excel表格中的文本string中提取一个3位数的数字。 我已经写了我的自定义函数返回基于模式的子string,这很好,它的工作原理。 这是打我的模式。 所以,例子可以包括:

  • Lorem ipsum dolor cc123坐amet
  • Lorem ipsum dolor坐amet cc 123
  • Lorem ipsum c 123,多尔坐在amet

我不是正则expression式的专家,但通常我会使用(?<= \ D)\ d {3} \ b这与我尝试过的所有testing,但VBA似乎不支持(?<= X)。 只用\ D \ d {3} \ b并修剪前面的char作品,但会冒犯我的感官。

我正在使用标准VBscript正则expression式5.5库。

实际的背景是,我有一个大的工作表,每行上都有一个注释字段。 政策一直是用户在这个领域的某个地方包括他们的成本中心。 它可以出现在字段中的任何地方,它总是一个三位数的数字,它后面总是跟着一个字边界,并且总是在非数字字符前面。

你可以去反向引用解决scheme:

 \D(\d{3})\b 

如果你只对3位数字感兴趣,你可以使用这里描述的正则expression式,并重用第一个捕获组\1 (在VB中可能是$1

我最好的猜测是使用: \D(\d{3})\b

 Dim myRegExp, ResultString, myMatches, myMatch As Match Dim myRegExp As RegExp Set myRegExp = New RegExp myRegExp.Pattern = "\D(\d{3})\b" Set myMatches = myRegExp.Execute(SubjectString) If myMatches.Count >= 1 Then Set myMatch = myMatches(0) If myMatch.SubMatches.Count >= 1 Then ResultString = myMatch.SubMatches(1-1) Else ResultString = "" End If Else ResultString = "" End If