java - 正则表达式仅匹配域,而忽略url中的子域

标签 java regex

使用Java和java.net.URI,我只希望匹配URL的域部分,而忽略任何子域。

    URI uri = new URI(url);
    String domain = uri.getHost();


然后,将domain的值用于匹配以下正则表达式:

((-{1})?\w)+\.((co\.uk)|(com\.au)|com|net|ch)


change.com->正确匹配

subdomain1.change.com->错误,因为“ subdomain1.ch”首先匹配

我未能正确编写可以正确解析URL并仅获得我需要的上述TLD(co.uk,com.au,com,net和ch)所需的正则表达式。即使需要添加其他TLD,该正则表达式也应与其匹配。

此外,即使存在多个子域,我也希望正则表达式与URL匹配。

sub-domain1.subdomain2.sub-domain3.change.com


我希望正则表达式仅匹配change.com

我怎么能不理会整个时期“。”与上面列出的任何TLD匹配后,URL字符串中是否有字符?我在这里先向您的帮助表示感谢!

最佳答案

用例公式:

\w+\.\w{2,3}$

Demo

或者,如果您要使用模式,只需将$附加到正则表达式的末尾

关于java - 正则表达式仅匹配域,而忽略url中的子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44105333/

相关文章:

java - 如何获取一个字符串并将其作为变量......?我什至不知道如何表达

python - 使用 python 在文件中保留两个表达式(不包括)之间的连线

java - 自动将 `for (int i=0;i<list.size();i++)` 转换为增强型 for/for-each 循环?找到可增强的 for 循环?

.net - 将 IEnumerable<char> 转换为字符串的最佳方法?

Java 在字符串中查找单词

java - 检索 jtextfield 数据以与单击的复选框一起使用

java - 如何设置时间?

java - 每次运行定义的循环都会给出不同的时间

java - 转换结果时出错 java.lang.NullPointerException : lock == null, 为什么会出现此错误?

c# - 长度为 5 和 , 或 的 float 的正则表达式。分隔符