正则表达式解析数据源url中的ip、port、dbName

public static void getHostFrom(String url) {
        // (?<db>\w+)  \w:匹配任何字类字符,包括下划线与"[A-Za-z0-9_]"等效;+:一次或多次匹配前面的字符或子表达式
        //              表示 匹配一堆字符
        // .*          表示会出现零次或者多次 .
        // ((//)|@)     表示 // 或者 @
        // (?<host>.+)  表示一次或多次出现 .
        // (?<port>\d+) 表示一次或多次出现数字字符
        // (/|(;DatabaseName=)|:) 表示 / 或者 ;DatabaseName= 或者 :
        // (?<dbName>\w+) 表示会出现一次或多次任何字类字符
        // \\??.*       \\??表示零次或一次匹配?、.*表示会出现零次或多次
        Pattern p = Pattern.compile("jdbc:(?<db>\\w+):.*((//)|@)(?<host>.+):(?<port>\\d+)(/|(;DatabaseName=)|:)(?<dbName>\\w+)\\??.*");
        Matcher m = p.matcher(url);
        if(m.find()) {
            System.out.println("db:  " + m.group("db"));
            System.out.println("host:  " + m.group("host"));
            System.out.println("port:  " + m.group("port"));
            System.out.println("dbName:  " + m.group("dbName"));
            System.out.println();
        }

    }
    public static void main(String[] args) {
        getHostFrom("jdbc:mysql://127.0.0.1:3306/databaseName_1?aaa=bbb&ccc=ddd");
        getHostFrom("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=databaseName;");
        getHostFrom("jdbc:oracle:thin:@localhost:1521/dbName");
        getHostFrom("jdbc:oceanbase://localhost:1521/dbName");

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值