import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
//TIP To Run code, press or
// click the icon in the gutter.
public class Main {
public static void main(String[] args) {
String p1 = "(?:[0-9a-f]{1,4}:|::){1,15}(?:[0-9a-f]{1,4})?";
String p2 = "(?:[0-9a-f]{1,4})?(?::[0-9a-f]{1,4}|::){1,14}(?:[0-9a-f]{1,4})?";
String pp = "^"+p2+"$";
System.out.println(pp);
var p = Pattern.compile(pp);
List lists = new ArrayList<>();
lists.add("2600:1500:5aa0:30ce:678f:520a:7875:a690");
lists.add("2600:1500:5aa0:30ce::1");
lists.add("2001:db8::1");
lists.add("fe80::9871:44ae:e337:359a");
lists.add("::1");
for(String str : lists) {
var m = p.matcher(str);
var found = m.find();
if(found) {
System.out.println(str+" -> "+found+" "+m.group(0));
} else {
System.out.println(str + " -> " + found);
}
}
}
}