使用Java正则表达式进行字符串操作

时间:2012-04-20 19:45:46

标签: java regex

我有这种格式的字符串:

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

我想使用Java regexp从String中提取<user><password>字符串。这样做最好的方法是什么?

编辑:

我希望能够在String的替换方法中使用此正则表达式,以便我只留下相关的用户和密码字符串

1 个答案:

答案 0 :(得分: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 regex = "^mydb://([^:]+):([^@]+)@[^:]+:\\d+$";
String user = str.replaceAll(regex, "$1");
String pass = str.replaceAll(regex, "$2")