正则表达式获取一串网址的域名段代码

2024-05-25 14:29:45 浏览数 (1)

有时候我们需要对一段网址获取其域名的一串,

比如:http://www.baidu.com/aaaa/bbb/cccc.html

我们需要获取到http://www.baidu.com这一串,

或者是http://192.168.111.11:8888/aaaa/bbb/ccc.html,

我们需要获取到http://192.168.111.11:8888这一串

那正则表达式应该怎么写呢?

代码语言:javascript复制
public static String getRegUrl(String url) {
        //使用正则表达式过滤,
        String re = "((http|ftp|https)://)(([a-zA-Z0-9._-] )|([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}))(([a-zA-Z]{2,6})|(:[0-9]{1,4})?)";
        String str = "";
        // 编译正则表达式
        Pattern pattern = Pattern.compile(re);
        // 忽略大小写的写法
        // Pattern pat = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(url);
        //若url==http://127.0.0.1:9040或www.baidu.com的,正则表达式表示匹配
        if (matcher.matches()) {
            str = url;
        } else {
            String[] split2 = url.split(re);
            if (split2.length > 1) {
                String substring = url.substring(0, url.length() - split2[1].length());
                str = substring;
            } else {
                str = split2[0];
            }
        }
        return str;
    }

运行结果:

完整demo:

代码语言:javascript复制
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Testccc {
    public static void main(String[] args) {
        String aaa="https://192.168.111.11:8888/aaa/bbb/ccc.html";
        String ip = getRegUrl(aaa);
        System.out.println("网址:" aaa "的域名是:" ip);
        String bbb="http://www.baidu.com/aaaa/bbb/cccc.html";
        String ip2 = getRegUrl(bbb);
        System.out.println("网址:" bbb "的域名是:" ip2);
    }

    public static String getRegUrl(String url) {
        //使用正则表达式过滤,
        String re = "((http|ftp|https)://)(([a-zA-Z0-9._-] )|([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}))(([a-zA-Z]{2,6})|(:[0-9]{1,4})?)";
        String str = "";
        // 编译正则表达式
        Pattern pattern = Pattern.compile(re);
        // 忽略大小写的写法
        // Pattern pat = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(url);
        //若url==http://127.0.0.1:9040或www.baidu.com的,正则表达式表示匹配
        if (matcher.matches()) {
            str = url;
        } else {
            String[] split2 = url.split(re);
            if (split2.length > 1) {
                String substring = url.substring(0, url.length() - split2[1].length());
                str = substring;
            } else {
                str = split2[0];
            }
        }
        return str;
    }
}

0 人点赞