Skip to content
accelerando

regex: URL thingy with username, password, host and port

Just in case i do keep forgetting that stuff, here’s a regex for decoding urls like

ftp://user:somepass@somehost:someport

in Java:

final Hashtable<String, Integer> portMap = new Hashtable<String, Integer>();
portMap.put("ftp", 21);
portMap.put("sftp", 22);
 
final Pattern urlPattern = Pattern.compile("(ftp|sftp)://(\\S+):(\\S+)@([\\S&&[^:]]+)(:(\\d+))?");
 
final Matcher m = urlPattern.matcher(url);
if(!m.matches()) 
	throw new RuntimeException("Invalid ftp url!");			
 
final String protocol = m.group(1).toLowerCase();
final String user     = m.group(2);
final String password = m.group(3);
final String host     = m.group(4);
final int port = m.group(6) != null ? Integer.parseInt(m.group(6)) : portMap.get(protocol);

Just in case anybody is interessted, i’m writing a wrapper around j2ssh and Commons::Net to support both ftp and sftp in a J2SE program.

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*

*

Close
E-mail It