使用正则表达式从字符串中提取IP地址

在一个应用程序中,我得到了包含IP地址的字符串,但是这些字符串没有精确的格式。我们所知道的是,这些字符串可能包含IP地址。

这是字符串的示例:

  • “ XPSPort”
  • “ IP_10.29.167.187”
  • “ 10.29.166.193”

我想获得一个Java代码,如果有一个Java代码,则提取该字符串的IP地址;如果该字符串不包含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";

}

我很确定使用RegExp是实现此目标的最佳方法,但是我对这些都不是很满意,因此有人可以帮我找到好的RegExp吗?

提前致谢。

回答:

理查德的链接帮助我找到了答案。这是工作代码:

String IPADDRESS_PATTERN = 

"(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";

Pattern pattern = Pattern.compile(IPADDRESS_PATTERN);

Matcher matcher = pattern.matcher(ipString);

if (matcher.find()) {

return matcher.group();

} else{

return "0.0.0.0";

}

以上是 使用正则表达式从字符串中提取IP地址 的全部内容, 来源链接: utcz.com/qa/428458.html

回到顶部