如何使用正则表达式检测ping字符串中的IP地址

时间:2014-06-10 11:32:04

标签: java regex

String s = "PING www.google.com (173.194.70.106) 56(84) bytes of data."
boolean z = pattern.matches("\\(([0-9]{1,3}\\.){3}[0-9]{1,3}\\)", s);

z将为0.我在哪里犯了错误,因为我试图检测的序列是(X.X.X.X),那么对于s (173.194.70.106)会是什么?

egrep -e "\(([0-9]{1,3}\.){3}[0-9]{1,3}\)"测试给出了期望的结果,所以我认为这是我和java之间的问题。

1 个答案:

答案 0 :(得分:3)

matches()将尝试匹配正则表达式上的整个字符串。

出于您的目的,您可以使用Matcher.find()

String s = "PING www.google.com (173.194.70.106) 56(84) bytes of data.";
Pattern p = Pattern.compile("\\(([0-9]{1,3}\\.){3}[0-9]{1,3}\\)");
Matcher m = p.matcher(s);
if (m.find()) {
    System.out.println(m.group(0));
}