正则表达式提取URL的第一部分

时间:2013-02-13 20:38:05

标签: java regex

我需要一个java正则表达式来提取URL的一部分。

例如,请使用以下网址:

http://localhost:81/example
https://test.com/test
http://test.com/

我希望我的正则表达式返回:

http://localhost:81
https://test.com
http://test.com

我将在Java修补程序中使用它。

这是我到目前为止所遇到的问题,它需要整个网址:

^https?:\/\/(?!.*:\/\/)\S+

4 个答案:

答案 0 :(得分:6)

import Java.net.URL

//snip

URL url = new URL(urlString);
return url.getProtocol() + "://" + url.getAuthority();

正确工作的正确工具。

答案 1 :(得分:3)

取消你的尝试,试试这个:

^https?://[^/]+

我假设您要捕获所有内容,直到第一个/之后http://? (这就是我从你的例子中得到的 - 如果没有,请发表更多信息)。

这些网址是作为一个输入提供的,还是每个都是不同的字符串?

编辑:有人指出存在不必要的转义,因此修复为更简洁的版本

答案 2 :(得分:1)

语言独立答案:

对于空白:用空字符串替换/^\s+/

要从URL中删除路径信息,如果您可以假设路径中没有任何斜杠(即您没有处理http://localhost:81/foo/bar/baz),请将/\/[^\/]+$/替换为空字符串。如果可能有更多斜杠,您可以尝试将/(^\s*.*:\/\/[^\/]+)\/.*/替换为$1

答案 3 :(得分:1)

一个简单的:^(https?://[^/]+)