私はこの形式の文字列を持っています:
mydb://<user>:<password>@<host>:27017
<user>
そして、<password>
文字列から文字列を抽出するためにJava正規表現を使用したいと思います。そうするための最良の方法は何でしょうか?
編集:
文字列のreplaceメソッドでこの正規表現を使用できるようにしたいと思います。これにより、関連するユーザーとパスワードの文字列だけが残ります。
この正規表現を使用できます(パターン)
Pattern p = Pattern.compile("^mydb://([^:]+):([^@]+)@[^:]+:\\d+$");
そして、キャプチャ グループ #1 と #2 には、それぞれユーザーとパスワードがあります。
コード:
String str = "mydb://foo:bar@localhost:27017";
Pattern p = Pattern.compile("^mydb://([^:]+):([^@]+)@[^:]+:\\d+$");
Matcher matcher = p.matcher(str);
if (matcher.find())
System.out.println("User: " + matcher.group(1) + ", Password: "
+ matcher.group(2));
出力:
User: foo, Password: bar
編集:コメントに基づいて: String メソッドを使用する場合:
String regex = "^mydb://([^:]+):([^@]+)@[^:]+:\\d+$";
String user = str.replaceAll(regex, "$1");
String pass = str.replaceAll(regex, "$2")