java通过正则表达式提取地址项

标签 java regex

我有一个字符串: 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/

相关文章:

java - Spring Integration - 如何处理 LoggingHandler 的异常

regex - 如何用 Go regexp 中的计数器替换出现的字符串?

java 分割字符串并只保留特定单词之后的所有内容

Python re.split 和 re.findall : grouping and capturing

Java Pattern.matcher() 在匹配包含\n 的行时卡住

Pentaho 中的 Java 堆空间错误

java - RSECNOTE 工具是否用于 ABAP 和/或 JAVA 堆栈?

java - split 函数在分割字符串后增加新的空格字符

java - 如何将参数从另一个类传递给非静态方法?

java - Kotlin:像在 Java 中一样创建一个常规数组