0

私はこの形式の文字列を持っています:

mydb://<user>:<password>@<host>:27017

<user>そして、<password>文字列から文字列を抽出するためにJava正規表現を使用したいと思います。そうするための最良の方法は何でしょうか?

編集:

文字列のreplaceメソッドでこの正規表現を使用できるようにしたいと思います。これにより、関連するユーザーとパスワードの文字列だけが残ります。

4

1 に答える 1

5

この正規表現を使用できます(パターン)

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")
于 2012-04-20T20:52:17.013 に答える