1

重複の可能性:
IPv4とIPv6の文字列を照合するためのJava正規表現は何ですか?

特定のIPv6アドレスを解凍するJavaコードを持っている人はいますか?

正規表現を書くのは本当に難しいと感じています。

4

2 に答える 2

3

次のいずれかが役立ちます。

public static final String IPV6_HEX4DECCOMPRESSED_REGEX = "\\A((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?) ::((?:[0-9A-Fa-f]{1,4}:)*)(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z";
public static final String IPV6_6HEX4DEC_REGEX = "\\A((?:[0-9A-Fa-f]{1,4}:){6,6})(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z";
public static final String IPV6_HEXCOMPRESSED_REGEX = "\\A((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)::((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)\\z";
public static final String IPV6_REGEX = "\\A(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\\z";

また、あなたの人生を楽にするInet6Address クラスも見てください。

参照:

于 2012-08-15T19:36:44.440 に答える
0

を使用できるのに、なぜ正規表現を使用するのInet6Address.getHostAddressですか?

final String compressed = "1080::8:800:200c:417a";
final String decompressed = "1080:0:0:0:8:800:200c:417a";
try {
  final Inet6Address addr = (Inet6Address) InetAddress.getByName(compressed);
  assert addr.getHostAddress().equals(decompressed);
} catch (UnknownHostException ex) { }
于 2012-08-15T19:39:14.833 に答える