我有一个字符串: user1:password@192.168.1.3:3306/dbname1 我需要填写用户名、密码、主机、端口和 dbname 变量... 我的代码:
String patternStr = "(\b[A-Z0-9._%+-]+):([A-Z]+)@([A-Z0-9.-]+):([0-9]{1,5})/([A-Z0-9_-]+)";
Pattern p = Pattern.compile(patternStr, Pattern.CASE_INSENSITIVE);
Matcher matcher = p.matcher(dbpath);
System.out.println(matcher.matches());
输出:
false
:(请告诉我我的错误... 谢谢。
最佳答案
这是一个更简单的版本,它不是 100% 正确,但它可以满足您的需求:
String dbpath = "user1:password@192.168.1.3:3306/dbname1";
String patternStr = "([^:]+):([^@]+)@([^:]+):([^/]+)/(.+)";
Pattern p = Pattern.compile(patternStr, Pattern.CASE_INSENSITIVE);
Matcher matcher = p.matcher(dbpath);
System.out.println(matcher.matches());
// Output: true
关于java通过正则表达式提取地址项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5383290/