Java 正则表达式提取 jdbc:mysql://172.16.2.129:3306/ETLTest?useSSL=false 中的 172.16.2.129 和 3306
输入 jdbc:mysql://172.16.2.129:3306/ETLTest?useSSL=false
输出:host:172.16.2.129 port:3306
初期只有mysql,后期需要加入Oracle等其他的url连接
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author huazie
* @version 2.0.0
* @since 2.0.0
*/
public class Test1 {
public static void main(String args[]) {
Pattern pattern = Pattern.compile("((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})(\\.((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})){3}:\\d+");
String url = "jdbc:mysql://172.16.2.129:3306/ETLTest?useSSL=false";
Matcher matcher = pattern.matcher(url);
if (matcher.find()) {
String group = matcher.group();
System.out.println(group);
String[] hostArr = group.split(":");
System.out.println("host = " + hostArr[0]);
System.out.println("port = " + hostArr[1]);
}
}
}
获取host可以通过正则表达 //(.+)?:来获取,port: :\d+/? 正则检查网站
String url = "jdbc:mysql://172.16.2.129:3306/ETLTest?useSSL=false";
String regex = "^jdbc:.+:\\W*?([a-z0-9.]+):(\\d+)\\W+.*";
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(url);
if(matcher.find()){
System.out.println("host:" + matcher.group(1) + " port:" + matcher.group(2));
}
JAVA 代码如下:
String jdbcUrl = "jdbc:mysql://172.16.2.129:3306/ETLTest?useSSL=false";
Pattern p = Pattern.compile("(\\d+\\.\\d+\\.\\d+\\.\\d+)\\:(\\d+)");
Matcher m = p.matcher(jdbcUrl);
//将符合规则的提取出来
while(m.find()) {
System.out.println("ip:"+m.group(1));
System.out.println("port:"+m.group(2));
}
演示结果: