Java Ping结果的正则表达式模式匹配
我试图从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
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]);