gpt4 book ai didi

java - 在Java中获取没有子域的域?

转载 作者:行者123 更新时间:2023-11-30 03:29:27 25 4
gpt4 key购买 nike

以下代码打印 www.sub.google.com

import java.net.MalformedURLException;
import java.net.URL;
public class GetDomainNameFromURL {
public static void main(String[] args) throws MalformedURLException {
String s = "http://www.sub.google.com/main?&t=20&f=52";
URL u = new URL(s);
String hostName = u.getHost();
System.out.println(hostName);
}
}

如何打印 google.com?需要使用纯 Java,无 Guava 库。

最佳答案

这很棘手,因为 URL 类只能让您到目前为止。它为您提供主机名,然后由您提取域名减去子域

要在此处识别域名,您需要知道什么 TLD(顶级域,例如 .com、.co 等)或 ccTLD(国家/地区代码您事先期望的 TLD(如 .co.uk、.uk 等),因为这将确定您的域名从何处(哪个 . 点)开始。

例如,以下正则表达式:

(?<=.)[^.]+\.(com|co(\.uk)?|uk)$

将为您识别以下域名:

www.google.com
mail.google.co
www.google.co.uk
www.sub.google.uk

更通用的解决方案需要事先做出假设,例如 TLD 或 ccTLD 将不超过两个或三个字符,以将其与主域区分开来,但对于较新的 TLD,如 .guru、.photos、.expert、.legal等等,不可能再让它适用于所有域。

关于java - 在Java中获取没有子域的域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29425406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com