我有这种格式的字符串:
mydb://<user>:<password>@<host>:27017
我想使用Java regexp从String中提取<user>
和<password>
字符串。这样做最好的方法是什么?
编辑:
我希望能够在String的替换方法中使用此正则表达式,以便我只留下相关的用户和密码字符串
答案 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")