有时候我们需要对一段网址获取其域名的一串,
比如: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;
}
}