String url = "http://regex.info/blog"; String regex = "(?x) ^(https?):// ([^/:]+) (?:(\\d+))?"; Matcher m = Pattern.compile(regex).matcher(url); if (m.find()) { System.out.print( "Overall [" + m.group() + "]" + " (from " + m.start() + " to " + m.end() + ")\n" + "Protocol [" + m.group(1) + "]" + " (from " + m.start(1) + " to " + m.end(1) + ")\n" + "Hostname [" + m.group(2) + "]" + " (from " + m.start(2) + " to " + m.end(2) + ")\n" ); // Group #3 might not have participated, so we must be careful here if (m.group(3) == null) System.out.println("No port; default of '80' is assumed"); else { System.out.print("Port is [" + m.group(3) + "] " + "(from " + m.start(3) + " to " + m.end(3) + ")\n"); } } ----------------------------------------------------------------------------- Copyright 1997-2024 Jeffrey Friedl