Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Ping结果的正则表达式模式匹配_Java_Regex - Fatal编程技术网

Java Ping结果的正则表达式模式匹配

Java Ping结果的正则表达式模式匹配,java,regex,Java,Regex,我试图从ping中提取一个值,但似乎无法确定如何在一定数量的“/”之后获取该值 粗体的值是我想要得到的- rtt min/avg/max/mdev = 1.347/2.178/3.199/0.769 ms 但这会返回在“/”之间的所有值,我不想循环它,直到我找到第二个数值 有人能帮我弄一下这个图案吗 Pattern regex = Pattern.compile("/([0-9]*[.][0-9]+)/"); String line = "rtt min/avg/max/mdev = 1.347

我试图从ping中提取一个值,但似乎无法确定如何在一定数量的“/”之后获取该值

粗体的值是我想要得到的-

rtt min/avg/max/mdev = 1.347/2.178/3.199/0.769 ms
但这会返回在“/”之间的所有值,我不想循环它,直到我找到第二个数值

有人能帮我弄一下这个图案吗

Pattern regex = Pattern.compile("/([0-9]*[.][0-9]+)/");
String line = "rtt min/avg/max/mdev = 1.347/2.178/3.199/0.769 ms";
Matcher matcher = regex.matcher(line);
if(matcher.find()) {
    String group = matcher.group(1);
    System.out.println(group);
}
输出

2.178

bluebrigade23说-但这会返回“/”之间的所有内容,我不想循环 通过它直到我到达第二个数值

如果您知道第二个数值是您所需要的,那么为什么要使用正则表达式,而您可以简单地拆分字符串,这是一种更方便的方法

    String[] no = "1.347/2.178/3.199/0.769 ms".split("/");
    System.out.println(no[1]);  

这将产生2.178作为一个更简单、更高效的输出。请提供正确的输入,我看不到您的输入中有任何粗体。因为我将经历一个更像:8.8.8.8中的64字节:icmp_seq=4 ttl=59 time=24.6 ms rtt min/avg/max/mdev=1.347/2.178/3.199/0.769 ms,这是一个字符串,拆分也可以吗?@bluebrigade23您仍然可以通过在子字符串行上拆分来使用这种方法。子字符串(line.lastIndexOf(“=”,line.length()).split(“/”)@bluebrigade23更简单的方法String[]words=line.split(“rtt min/avg/max/mdev=”);如果你的字符串是line,那么单词[1]将给出字符串“1.347/2.178/3.199/0.769 ms”,然后你可以按照我的回答尝试理解模式,这是否只是抓住了前两个“/”之间的值?
[0-9]*[.][0-9]+
搜索类似于小数点的任何东西(即2.178或.178)周围的圆括号使它成为一个组。开头和结尾
/
强制它位于
/…/
    String[] no = "1.347/2.178/3.199/0.769 ms".split("/");
    System.out.println(no[1]);