使用Java和java.net.URI,我想只匹配URL的域部分而忽略任何子域。
URI uri = new URI(url);
String domain = uri.getHost();
然后使用域的值来匹配以下正则表达式:
((-{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
我怎样才能忽视所有时期“。”在我匹配上面列出的任何顶级域名后,网址字符串中的字符?感谢您的帮助!
答案 0 :(得分:1)
使用以下否定前瞻组补充您的正则表达式:(?!\w)
。
因此,如果下一个字符是单词char,则主正则表达式将不匹配。
答案 1 :(得分:1)