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

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


阿晨1998
浏览 209回答 2
2回答

HUH函数

使用java.net.URL类进行解析URL url = new URL("https://google.com:443/search");System.out.println(url.getProtocol()); // httpsSystem.out.println(url.getHost()); // google.comSystem.out.println(url.getPort()); // 443

慕慕森

有什么特别的理由在你的情况下使用正则表达式吗?如果不是,您应该使用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));}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java