我需要一个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+
答案 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?://[^/]+)