我必须在Java中的字符串中获取两个单词之间的值,该字符串是这样的:
PING 151.92.198.78 (151.92.198.78) 56(84) bytes of data.
From 10.251.211.1: icmp_seq=1 Time to live exceeded
我需要获取:10.251.211.1
该IP始终在From和icmp_seq之间。
如何用Java做到这一点?我尝试使用此代码:
final Pattern pattern = Pattern.compile("From (.+?) icmp_seq=");
final Matcher matcher = pattern.matcher(output);
matcher.find();
Log.wtf(iLinkLog, "Process output"+matcher.group(1));
但这是行不通的。
正确的正则表达式可以解决问题:
public static void main(String[] args) throws Exception {
String s = "PING 151.92.198.78 (151.92.198.78) 56(84) bytes of data." + "\n"
+ "From 10.251.211.1: icmp_seq=1 Time to live exceeded";
Pattern p = Pattern.compile(".*From\\s+(.*?):\\s+icmp_seq", Pattern.DOTALL);
// pattern selects everything preceeded by "From" upto ":<space>icmp_seq"
Matcher m = p.matcher(s);
while(m.find()) {
System.out.println(m.group(1));
}
}
O / P:
10.251.211.1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句