我需要帮助来创建正则表达式以使用Java匹配URL的特定部分。特别是协议,主机名和端口。
例如,如果我有一个URL http://hq.dev.test.domain:8080/ip/CreateRegex
并且
我想提出以下几点:
[Protocol]=http
[Hostname]=hq.dev.test.domain
[Port]=8080
这是我当前拥有的内容,仅适用于该协议。我还将对该正则表达式进行任何更新。
var getProtocol= ^((http)?:\\/\\/).*\\w*(CreateRegex)$
答案 0 :(得分:3)
使用java.net.URL
类进行解析
/a_folder/title00.mkv
title01.mkv
title02.mkv
/b_folder/title00.mkv
title01.mkv
title02.mkv
答案 1 :(得分:0)
在您的情况下是否有任何特殊原因使用正则表达式?如果不是,则应使用URL
来解析字符串。
URL url = new URL("http://hq.dev.test.domain:8080/ip/CreateRegex");
System.out.println("[Protocol]=" + url.getProtocol());
System.out.println("[Hostname]=" + url.getHost());
System.out.println("[Port]=" + url.getPort());
尽管如此,为了完整起见,您将如何使用正则表达式进行操作:
Pattern regex = Pattern.compile("^(\\w+)://([^:/]*)(?::(\\d+))?.*");
Matcher regexMatcher = regex.matcher("http://hq.dev.test.domain:8080/ip/CreateRegex");
if (regexMatcher.find()) {
System.out.println("[Protocol]=" + regexMatcher.group(1));
System.out.println("[Hostname]=" + regexMatcher.group(2));
System.out.println("[Port]=" + regexMatcher.group(3));
}