正则表达式,用于匹配URL的各个部分

时间:2018-11-05 17:13:18

标签: java regex

我需要帮助来创建正则表达式以使用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)$

2 个答案:

答案 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));
}