如何使用正则表达式提取它

时间:2011-01-25 13:00:52

标签: java regex

我需要提取这个

示例:

 www.google.com
 maps.google.com
 maps.maps.google.com

我需要从中提取google.com

我怎样才能用Java做到这一点?

4 个答案:

答案 0 :(得分:1)

假设您想要从主机名中获取顶级域名,您可以尝试这样做:

Pattern pat = Pattern.compile( ".*\\.([^.]+\\.[^.]+)" ) ;
Matcher mat = pat.matcher( "maps.google.com" ) ;
if( mat.find() ) {
    System.out.println( mat.group( 1 ) ) ;
}

如果它是相反的,并且你想要除了域的最后两部分之外的所有内容(在你的示例中为www, maps, and maps.maps),那么只需将第一行更改为:

Pattern pat = Pattern.compile( "(.*)\\.[^.]+\\.[^.]+" ) ;

答案 1 :(得分:1)

.上拆分并选择最后两位。

    String s = "maps.google.com";
    String[] arr = s.split("\\.");
    //should check the size of arr here
    System.out.println(arr[arr.length-2] + '.' + arr[arr.length-1]);

答案 2 :(得分:1)

从字符串中提取一个已知的子字符串没有多大意义;)为什么要这样做

String result = address.replaceAll("^.*google.com$", "$1");

当它相等时:

String result = "google.com";

如果您需要测试,请尝试:

String isGoogle = address.endsWith(".google.com");

如果您需要Google地址中的其他部分,这可能有所帮助:

String googleSubDomain = address.replaceAll(".google.com", "");

(提示 - 第一行代码是您问题的解决方案!)

答案 3 :(得分:0)

 String str="www.google.com";

 try{
       System.out.println(str.substring(str.lastIndexOf(".", str.lastIndexOf(".") - 1) + 1));
  }catch(ArrayIndexOutOfBoundsException ex){
       //handle it
  }