我需要提取这个
示例:
www.google.com
maps.google.com
maps.maps.google.com
我需要从中提取google.com
。
我怎样才能用Java做到这一点?
答案 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
}