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}))?
文字列を 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 までしかないため、パターンは実際には機能しません。
これを試してください:
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));
}
お役に立てれば。
単一の 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 ~ 24925[0-5]
-> 範囲 250 ~ 255これを試して :((?:\d{1,3}\.){3}\d{1,3})(?:/((?:(?:\d{1,3}\.){3}\d{1,3})|\d{1,2})){2}