我试图产生一个正则表达式,可以识别VBA字符串中某个间隔内的数字。有时,该数字周围带有字符,而其他时候则没有(供应商的符号不一致)。表达应确定1413在三个例子下面是数范围为500-2000内(或可替代地,它是没有在数量范围0-50或51-499)。
例子:
Test 12/2014. Tot.flow:1413 m3
或者 Test 12/2014. Tot.flow:1413m3
或者 Test 12/2014. Tot.flow: 1413
这些字符串具有一些标识符:
m3
m3
不一定总是存在,如果不是,则数字在字符串的末尾到目前为止,我尝试制作一个找到数字范围的正则表达式的尝试是([5-9][0-9][0-9]|[1]\d{3}|2000)
,但这也与所有三个数字都匹配(2001年对200进行匹配)。但是,我知道我在实现最终目标方面缺少一些概念。我猜我的问题如下:
flow:
和的符号变化m3
?我唯一感兴趣的检查数量谎言的数量范围内。这使我疯狂,所有帮助都受到赞赏!
您可以regExp.Replace()
使用以下正则表达式提取数字:
^.*:\s*(\d+).*$
替换零件是$1
。
然后,使用常规数字比较来检查该值是否在预期范围内(例如If CLng(result) > 499 And If CLng(result) < 2001 Then ...
)。
测试宏:
Dim re As RegExp,tgt As String,src As String
Set re = New RegExp
With re
.pattern = "^.*:\s*(\d+).*$"
.Global = False
End With
src = "Test 12/2014. Tot.flow: 1413"
tgt = re.Replace(src, "$1")
MsgBox (CLng(tgt) > 499 And CLng(tgt) < 2001)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句