0

私は現在、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。

4

1 に答える 1

0

次の正規表現コードが役に立ちます。有効な IP アドレスを入力すると、プライベート範囲にないものと一致します。ただし、IP アドレスが有効かどうかは判断しません (たとえば、192.168.864.543 に一致する場合があります)。それを解決するために変更することもできますが、正規表現は数値ではなく文字列を処理するため、より困難です。

10\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}|172.([1][6-9]|[2][0-9]|[3][0-1])\.[0-9]{1,3}\.[0-9]{1,3}|192.168\.[0-9]{1,3}\.[0-9]{1,3}

とはいえ、コメントが示唆したように、正規表現はこの問題を解決する最良の方法ではないかもしれません. 上記は、正規表現を使用したい場合に使用できる方法ですが、前述のように制限があります。

于 2012-07-11T01:48:13.643 に答える