使用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/