我有一个包含多个IP地址的大字符串。
String str1 = "10.0.0.2 - frank [10/Oct/2000:13:55:36" + " -0700] \"GET /apache_pb.gif HTTP/1.0\" 200 2326 "
+ "\"104.244.253.29\" \"Mozilla/4.08 " + "[en] (Win98; I ;104.30.244.2)\"";
我使用split
将字符串接近字符串数组,然后检查单词中包含3 .
的每个单词。但dint被发现是一个万无一失的解决方案。
我想使用正则表达式并获取List<String>
ipAddresses返回
public List<String> findIPs(String str) {
//implement it via regex
}
这里我想要方法将返回的字符串列表中的3项。
如何通过正则表达式来完成?
提前致谢。
答案 0 :(得分:1)
String str1 = "10.0.0.2 - frank [10/Oct/2000:13:55:36" + " -0700] \"GET /apache_pb.gif HTTP/1.0\" 200 2326 "
+ "\"104.244.253.29\" \"Mozilla/4.08 " + "[en] (Win98; I ;104.30.244.2)\"";
Pattern p = Pattern.compile("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}");
Matcher m = p.matcher(str1);
while (m.find()){
System.out.println(m.group(0));
}