【发布时间】:2019-01-09 01:52:21
【问题描述】:
我正在使用 Java 8。我想提取 URL 的域部分。万一我错误地使用了“域”这个词,我想要的是我的服务器名称是
test.javabits.com
我想提取“javabits.com”。同样,如果我的服务器名称是
firstpart.secondpart.lastpart.org
我想提取“lastpart.org”。我尝试了以下
final String domain = request.getServerName().replaceAll(".*\\.(?=.*\\.)", "");
但它没有正确提取域。然后我尝试了这个人在他的网站上的内容——https://www.mkyong.com/regular-expressions/domain-name-regular-expression-example/,例如
private static final String DOMAIN_NAME_PATTERN = "^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}$";
但这也不是提取我想要的东西。如何正确提取域名部分?
【问题讨论】:
-
google.co.uk和类似的呢? -
假设它会帮助你:) stackoverflow.com/questions/21173734/…
-
刚刚对整个
co.uk做了一些研究,似乎还有很多其他的后缀publicsuffix.org/list/public_suffix_list.dat -
没有提取我想要的东西。你需要详细说明一些事情,因为当你天真地思考它和所有基于正则表达式的简单解决方案拆分时,它看起来很简单at dot 可能会严重失败。就像@LennartDeters 一样,看看 PSL。您可能需要也可能不需要使用它,具体取决于您要准确提取的内容。没有自动的方法来做同样的事情(列表随着时间的推移而变化,并且不被认为是详尽的,也没有错误,现在有 吨 NXDOMAINs)
-
同样正则表达式完全错误,它不适用于标签为
xn--something的IDN。一些 TLD 是 IDN。
标签: java regex string parsing subdomain