0

IPの範囲に一致する正規表現を誰かが手伝ってくれますか? 次のように一致する必要があります。

"203.0.113.0-203.0.113.255"

次のことを試しましたが、それは単一の IP にのみ一致します。

((?:\\d{1,3}\\.){3}\\d{1,3})(?:/((?:(?:\\d{1,3}\\. ){3}\\d{1,3})|\\d{1,2}))?
4

5 に答える 5

2

文字列を 2 つのコンポーネントに分割できます

String[] splitResult = ipRange.split("-");

次に、各部分文字列にこのパターンを使用します

string pattern = @"\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b"

各 IP セクションは 255 までしかないため、パターンは実際には機能しません。

于 2013-03-20T14:16:31.750 に答える
0

これを試してください:

String data = "This http://example.com is a sentence 203.0.113.0-203.0.113.255 https://secure.whatever.org that contains 2 URLs.";


    Pattern pattern = Pattern.compile("\\s((\\d{1,4}\\.?){4}-(\\d{1,4}\\.?){4})\\s");
    Matcher matcher = pattern.matcher(data);

    while (matcher.find()) {
        System.out.println(matcher.group(1));
    }

お役に立てれば。

于 2013-03-20T16:32:01.780 に答える
0

単一の IP に一致する正規表現がある場合は、正規表現を追加-して繰り返すだけです

String singleIPRegex = "yourRegex";
String rangeRegex = singleIPRegex + "-" + singleIPRegex;

if (someString.matches(rangeRegex)){
    //do your stuff
}

また、singleIPRegexとして使用できます

(([01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d{1,2}|2[0-4]\\d|25[0-5])

([01]?\\d{1,2}|2[0-4]\\d|25[0-5])

受け入れます:

  • [01]?\\d{1,2}-> 01、001 のように 0 または 00 で始まる数字を含む範囲 0-199
  • 2[0-4]\\d-> 範囲 200 ~ 249
  • 25[0-5]-> 範囲 250 ~ 255
于 2013-03-20T14:18:47.100 に答える
0

これを試して :((?:\d{1,3}\.){3}\d{1,3})(?:/((?:(?:\d{1,3}\.){3}\d{1,3})|\d{1,2})){2}

于 2013-03-20T14:21:43.093 に答える