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