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之间的问题。
答案 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));
}