有人可以用正則表達式來幫助我匹配一系列IP。它應該像本場比賽的東西:正則表達式匹配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}))?
有人可以用正則表達式來幫助我匹配一系列IP。它應該像本場比賽的東西:正則表達式匹配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}))?
如果你有正則表達式將匹配單個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}
- >範圍0-199包括數字開始使用0或00類似01,0012[0-4]\\d
- >範圍200-24925[0-5]
- >範圍250-255可以在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
試試這個:((?:\d{1,3}\.){3}\d{1,3})(?:/((?:(?:\d{1,3}\.){3}\d{1,3})|\d{1,2})){2}
嘗試了這一點:
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));
}
希望這有助於。