为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

阿晨1998 2021-12-30 20:37:00
我需要帮助创建一个正则表达式来匹配使用 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 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

使用java.net.URL类进行解析


URL url = new URL("https://google.com:443/search");

System.out.println(url.getProtocol()); // https

System.out.println(url.getHost()); // google.com

System.out.println(url.getPort()); // 443


查看完整回答
反对 回复 2021-12-30
?
慕慕森

TA贡献1856条经验 获得超17个赞

有什么特别的理由在你的情况下使用正则表达式吗?如果不是,您应该使用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));

}


查看完整回答
反对 回复 2021-12-30
  • 2 回答
  • 0 关注
  • 206 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号