在一个应用程序中,我得到了包含 IP 地址的字符串,但是这些字符串没有精确的格式。我们只知道这些字符串可能包含一个 IP 地址。
以下是字符串的示例:
- "XPSPort" - "IP_10.29.167.187" - "10.29.166.193"
我想要获得一段 Java 代码,如果字符串中包含 IP 地址,则提取该地址,否则返回 ""。
我尝试过以下代码但它不起作用:
以下是字符串的示例:
- "XPSPort" - "IP_10.29.167.187" - "10.29.166.193"
我想要获得一段 Java 代码,如果字符串中包含 IP 地址,则提取该地址,否则返回 ""。
我尝试过以下代码但它不起作用:
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";
}
我相信使用正则表达式是实现这个目标的最佳方式,但我不太擅长它们,所以有人能帮我找到好的正则表达式吗?
提前感谢。
^(?:([01]?[0-9]?[0-9]|25[0-5]|2[0-4][0-9])\.){3}([01]?[0-9]?[0-9]|25[0-5]|2[0-4][0-9])$
(在 https://regex101.com/r/8I7amT/7 尝试一下)。如果你想玩一下,这里有一个 HackerRank 练习:http://hr.gs/dwx - tuxErrante