zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    顺序队列的模板
    链式队列模板
    链式栈模板
    栈应用hanoi
    判断出栈顺序
    用栈实现四则运算
    两栈共享问题
    The Preliminary Contest for ICPC Asia Nanjing 2019
    Educational Codeforces Round 71 (Rated for Div. 2)
    HDU6583:Typewriter(dp+后缀自动机)
  • 原文地址:https://www.cnblogs.com/Traner/p/3208313.html
Copyright © 2011-2022 走看看