19

アプリケーションで、IP アドレスを含む文字列を取得しますが、これらの文字列には正確な形式がありません。私たちが知っているのは、これらの文字列に IP アドレスが含まれている可能性があるということだけです。

文字列がどのように見えるかの例を次に示します。

  • 「XPSポート」
  • 「IP_10.29.167.187」
  • 「10.29.166.193」

文字列にIPアドレスが含まれている場合は文字列のIPアドレスを抽出するか、文字列にIPアドレスが含まれていない場合は「」を返すJavaコードを取得したいと思います。

このコードを試しましたが、うまくいきません:

String IPADDRESS_PATTERN = 
        "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
        "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
        "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
        "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";

Pattern pattern = Pattern.compile(IPADDRESS_PATTERN);
Matcher matcher = pattern.matcher(ipString);
        if (matcher.find()) {
            return matcher.group();
        }
        else{
            return "0.0.0.0";
        }

RegExpを使用することがそれを達成するための最良の方法であると確信していますが、私はこれらがあまり得意ではないので、誰かが良いRegExpを見つけるのを手伝ってくれますか?

前もって感謝します。

4

4 に答える 4

15

IPV4_PATTERN = "^(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}$"

于 2013-04-08T08:59:54.923 に答える