【发布时间】:2012-07-11 01:34:35
【问题描述】:
我目前正在编写一个 excel 宏,但我的具体要求遇到了一些真正的麻烦。
我需要遍历单元格并找到任何不在私有范围内的 IP 地址,
10.0.0.0 – 10.255.255.255
172.16.0.0 – 172.31.255.255
192.168.0.0 – 192.168.255.255
我正在使用的代码:
Dim RE As Object
Set RE = CreateObject("vbscript.regexp")
With RE
.MultiLine = False
.Global = False
.IgnoreCase = True
.Pattern = ??
End With
VBA 代码没有任何问题,只是模式而已。
真的很想请一位正则表达式大师来帮忙!
例如,单元格的格式如下:
192.168.1.1 (subnet name), 203.134.56.7 (third party unknown), 10.0.0.0/8 (voice subnet), 10.1.1.5 (voice server), 56.8.0.0/16 (google)
至于下面的评论,这就是为什么我正在寻找一个正则表达式解决方案(如果有的话),因为这意味着我可以在一个单元格上运行它,它仍然应该找到一个第三方 IP,而不是拆分成一个数组,并通过一个函数运行每个 ip。
【问题讨论】:
-
有些人在遇到问题时会想“我知道,我会使用正则表达式”。现在他们有两个问题。
-
您的确切数据布局是什么?更简单的方法可能是将 IP 地址提取到 4 列中,然后测试每个部分是否在范围内