Oracle と MySQL の JDBC URL バリアントもその癖でキャプチャするために (たとえば、Oracle は@
の代わりに//
またはの使用を許可しています@//
)、この正規表現を使用してホスト名を取得します。[/@]+([^:/@]+)([:/]+|$)
次に、ホスト名はグループ 1 に含まれます。
コード例
String jdbcURL = "jdbc:oracle:thin:@//hostname:1521/service.domain.local";
Pattern hostFinderPattern = Pattern.compile("[/@]+([^:/@]+)([:/]+|$)");
final Matcher match = hostFinderPattern.matcher(jdbcURL);
if (match.find()) {
System.out.println(match.group(1));
}
これは、次のすべての URL (およびその他のバリアント) で機能します。
jdbc:oracle:thin:@//hostname:1521/service.domain.local
jdbc:oracle:thin:@hostname:1521/service.domain.local
jdbc:oracle:thin:@hostname/service.domain.local
jdbc:mysql://localhost:3306/sakila?profileSQL=true
jdbc:postgresql://production:5432/dbname
jdbc:postgresql://production/
jdbc:postgresql://production
これは、
は貪欲であることに注意してください+
。これは、中間のものにとって特に重要です。