网址的java正则表达式_java用正则表达式获取url的域名

下载代码

代码

package org.suyuesheng.spring7.util;

import org.junit.Test;

import java.util.ArrayList;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class GetDomainName {

private String url;

private int index;

/**

* 获取网络的根域名

* @param url

* @return

*/

public static String getDomainName(String url){

String pattern = "/(?!/)";

Pattern compile = Pattern.compile(pattern);

Matcher matcher = compile.matcher(url);

ArrayList list = new ArrayList<>();

while (matcher.find()){

list.add(matcher.start());

}

return url.substring(0, list.get(1)+1);

}

/**

*根据 index 来返回几级域名

* 如果 index为0,则返回顶级域名,如http://localhost:8080/。

* 如果index大于url所包含的最大域名级数就返回url

* @param url

* @param index 域名的级别,0为顶级域名,以此类推。

* @return

*/

public static String getDomainName(String url,int index){

String pattern = "/(?!/)";

Pattern compile = Pattern.compile(pattern);

Matcher matcher = compile.matcher(url);

ArrayList list = new ArrayList<>();

while (matcher.find()){

list.add(matcher.start());

}

try{

//如果index大于url所包含的最大域名级数就返回url

//这里面list的size减一就是这个url的最大级数,因为list包含一个/是url中http://的/。所以不应该算数

if(index>=list.size()-1){

return url;

}else if (index<0){

return null;

}else {

return url.substring(0, list.get(index+1)+1);

}

}catch (Exception e){

e.printStackTrace();

return null;

}

}

@Test

public void testDomain(){

System.out.println(GetDomainName.getDomainName("http://localhost:8080/test/session"));//http://localhost:8080/

System.out.println(GetDomainName.getDomainName("http://localhost:8080/test/session/", 3)); //http://localhost:8080/test/session/

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值