正则表达式,提取Host和Port

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连接

  • 先看截图:

img

  • 代码参考如下:
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));
        }

演示结果:

img