-1

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

例如,采用以下 URL:

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

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

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

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

这是我到目前为止所拥有的,问题是它需要整个 URL:

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

4 回答 4

6
import Java.net.URL

//snip

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

正确工作的正确工具。

于 2013-02-13T20:41:32.203 回答
4

建立你的尝试,试试这个:

^https?://[^/]+

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

这些 URL 是作为一个输入给出的,还是每个都是不同的字符串?

编辑:有人指出存在不必要的转义,因此固定为更精简的版本

于 2013-02-13T21:12:54.593 回答
1

语言无关答案:

对于空格:替换/^\s+/为空字符串。

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

于 2013-02-13T20:43:40.743 回答
1

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

于 2013-02-13T21:39:04.597 回答