mydb://<user>:<password>@<host>:27017
我想使用Java Regexp来从字符串中提取
<user>
和
<password>
字符串。最好的方法是什么?Edit: 我希望能够在字符串的替换方法中使用此REGEXP,以便我只留下相关的用户和密码字符串
您可以使用此正则(模式)
然后捕获第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
Regex详细信息:
^
:开始
mydb://
mydb://
([^:]+)
:匹配除
:
:
:
:匹配A([^@]+)
@
:匹配以外的任何字符的1+,并在第2组组中捕获
@
@
[^:]+
:
:
:
\\d+
$
:结束
基于您的评论:如果要使用字符串方法,则:
String regex = "^mydb://([^:]+):([^@]+)@[^:]+:\\d+$";
String user = str.replaceAll(regex, "$1");
String pass = str.replaceAll(regex, "$2")