有时候我们需要对一段网址获取其域名的一串,
比如: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这一串
那正则表达式应该怎么写呢?
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:
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; } }