从jdbc url获取数据库名host及port

Andy 2024年05月13日 515次浏览
public static void getHostFrom(String url) {
        Pattern p = Pattern.compile("jdbc:(?<db>\\w+):.*((//)|@)(?<host>.+):(?<port>\\d+)(/|(;DatabaseName=)|:)(?<dbName>\\w+)\\??.*");
        Matcher m = p.matcher(url);
        if(m.find()) {
            System.out.println(m.group("db"));
            System.out.println(m.group("host"));
            System.out.println(m.group("port"));
            System.out.println(m.group("dbName"));
        }
        
}
public static void main(String[] args) {
		getHostFrom("jdbc:mysql://127.0.0.1:3306/databaseName");
		getHostFrom("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=databaseName");
		getHostFrom("jdbc:oracle:thin:@localhost:1521:dbName");
		
}

具体原理参照:Java String.ReplaceAll捕获组用法(正则表达式捕获组及命名捕获组)