java用正则表达式获取domain
在工作中经常用到获取url的来源和域名的黑白名单功能.前段时间写了一个获取url中域名的方法.但是在测试过程中发现有些小问题.
/**
* 根据URL获取domain
* @param url
* @return
*/
public static String getDomainForUrl(String url){ String domainUrl = null;
if (url == null) {
return null;
} else {
Pattern p = Pattern.compile("(?<=http://|\\.)[^.]*?\\.(com|cn|net|org|biz|info|cc|tv)",Pattern.CASE_INSENSITIVE);
Matcher matcher = p.matcher(url);
matcher.find();
domainUrl = matcher.group();
return domainUrl;
}
}
下面是测试方法
public static void main(String[] args) { System.out.println(getDomainForUrl("www.likunran.com"));
System.out.println(getDomainForUrl("www.likunran.com"));
System.out.println(getDomainForUrl("atongbei.likunran.com.taobao.com")); }
执行结果
likunran.com
likunran.com
likunran.com
发现当域名正常时候取出来域名是正常的.如果域名里包含自己的域名就跪了.经过分析是正则表达式的匹配顺序有问题.故修改代码如下
/**
* 根据URL获取domain
* @param url
* @return
*/
public static String getDomainForUrl(String url){ String domainUrl = null;
if (url == null) {
return null;
} else {
Pattern p = Pattern.compile("(?<=http://|\\.)[^.]*?\\.(com|cn|net|org|biz|info|cc|tv)",Pattern.CASE_INSENSITIVE);
Matcher matcher = p.matcher(url);
while(matcher.find()){
domainUrl = matcher.group();
}
return domainUrl;
}
}
修改后测试结果
likunran.com
likunran.com
taobao.com
java用正则表达式获取domain的更多相关文章
- Java使用正则表达式获取文本的章节名称
获取文本的章节,首先要确定章节的开始标准,一般中文的章节都是以“第”开头,第一章.第二章等.所以使用“^”字符来确定首位,但是很多时候章节前面会有空白字符,所有以“第”作为章节的开始,进行以下的匹配 ...
- java+js正则表达式获取URL(带端口)域名
function isPassUrl(remoteLoginUrl){ var flag = false; var passUrlStr = document.getElementById(" ...
- Java 正则表达式获取两个字符中间的内容
利用 正则表达式 获取两个字符串中间的值 直接上代码吧,不是很难. public static void main(String[] args) { // 内容 String value = &quo ...
- Java面向对象 正则表达式
Java面向对象 正则表达式 知识概要: (1)正则表达式的特点 (2)正则表达的匹配 (3)正则表达式的切割,替换,获取 (4)正则表达式的练习 正则表达式:符合 ...
- Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码正则表达式
Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码校验正则表达式 ============================== ©Copyright 蕃薯耀 2017年11 ...
- Java对正则表达式的支持(一)
Java对正则表达式的支持主要体现在String.Pattern.Matcher和Scanner类. 1.Pattern.Matcher 先看一个Pattern和Matcher类使用正则表达式的例子. ...
- android java 字符串正则表达式 分离特殊字符串
Java中正则表达式的使用 在Java中,我们为了查找某个给定字符串中是否有需要查找的某个字符或者子字串.或者对字符串进行分割.或者对字符串一些字符进行替换/删除,一般会通过if-else.for 的 ...
- js and java 中正则表达式的使用
首先介绍一下js当中的几个关键的正则表达式: 1.js中的正则表达式校验 a: RegExp(如果这里有转义字符的话,需要使用“\\”) var patt1=new RegExp("e&qu ...
- Java中正则表达式的使用(常用的方法)
这两天回想了一下正则表达式的使用,顺便就总结了一下java的javascript中使用正则表达式的用法,需要看javascript中使用正则的朋友可以看我的另一篇总结,下面我就简单的介绍一下java中 ...
随机推荐
- 如何利用【百度地图API】,制作房产酒店地图?(下)——结合自己的数据库
原文:如何利用[百度地图API],制作房产酒店地图?(下)--结合自己的数据库 摘要:应广大API爱好者要求,写了一篇利用自己数据库标点的文章…… -------------------------- ...
- select查询原理
原文:select查询原理 我并非专业DBA,但做为B/S架构的开发人员,总是离不开数据库,一般开发员只会应用SQL的四条经典语句:select ,insert,delete,update.但是我从来 ...
- MVC EF 修改 封装类 通用泛型方法(一)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- 在线预览Excel
遇到的问题各种多 <system.web> <identity impersonate="true" userName="Administ ...
- SQL字符串处理函数
字符串函数对二进制数据.字符串和表达式运行不同的运算.此类函数作用于CHAR.VARCHAR. BINARY. 和VARBINARY 数据类型以及能够隐式转换为CHAR 或VARCHAR的数据类型. ...
- 九度oj题目&吉大考研11年机试题全解
九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码). http://ac.jobdu.com/problem.php?pid=11 ...
- EF结合SqlBulkCopy
EF结合SqlBulkCopy在项目中的使用 这是我第一次写博客,由于水平有限,写不出什么好东西,还望见谅. 我现在参与的这个项目采用的是EF框架,方便了数据库的访问.但在实际中,发现项目中导入市县E ...
- IOC 在Mvc中的使用
IOC 在Mvc中的使用 IOC,是控制反转(Inversion of Control)的英文简写, 控制反转一般分为两种类型,依赖注入(Dependency Injection)和依赖查找(Depe ...
- WimMaker 2.0 (2013.10) WIM制作工具
WimMaker 2.0 (2013.10) WIM制作工具 可用于制作PE启动内核的Wim文件 说明: 因本软件使用.NET2.0制作,故主要用于制作WIM映像不用于备份还原系统(虽可用,但不专业, ...
- java查找反复类/jar包/普通文件
开发web应用时,有时更新了类却没有生效,事实上是由于jboss/tomcat中其它公布包下有同名类(包含全路径都同样). 于是萌发了做个程序来检查指定文件夹是否存在反复类(通过asm从类文件里取类的 ...