gpt4 book ai didi

正则表达式间隔与数字VBA前后可能的字符

转载 作者:行者123 更新时间:2023-12-03 01:59:43 25 4
gpt4 key购买 nike

我正在尝试生成一个正则表达式,该表达式可以识别 VBA 中字符串中某个区间内的数字。有时这个数字周围有字符,有时则没有(供应商的表示法不一致)。该表达式应标识以下三个示例中的 1413 在数字范围 500-2000 内(或者它不在数字范围 0-50 或 51-499 内)。

示例:

  • 测试 12/2014。总流量:1413 m3
  • 测试 12/2014。总流量:1413m3
  • 测试 12/2014。总流量:1413

这些字符串有一些标识符:

  • 数字前面总是有一个冒号
  • 冒号和数字之间可能有空格
  • 数字和m3之间可能有空格
  • m3 不一定总是存在,如果不存在,则数字位于字符串末尾

到目前为止,我尝试制作一个查找数字范围的正则表达式是 ([5-9][0-9][0-9]|[1]\d{3}| 2000),但这也匹配所有三位数(2001 匹配 200)。然而,我知道我错过了一些实现最终目标的概念。我想我的问题如下:

  1. 如何从非零开始间隔(发现很多关于从零开始的间隔的问题)
  2. 如何考虑 flow:m3 表示法的变化?

有兴趣检查该数字是否在数字范围内。这让我抓狂,非常感谢所有帮助!

最佳答案

您可以使用 regExp.Replace() 提取号码使用以下正则表达式:

^.*:\s*(\d+).*$

替换零件是$1 .

然后,使用通常的数字比较来检查该值是否在预期范围内(例如 If CLng(result) > 499 And If CLng(result) < 2001 Then ... )。

测试宏:

Dim re 作为正则表达式,tgt 作为字符串,src 作为字符串

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)

关于正则表达式间隔与数字VBA前后可能的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33344122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com