^(?:http://)?([^\\/]+)(.*)$
?в конце (?:http://)?
означает, что бит является необязательным
, этот ([^\\/]+)
захватывает и сопоставляет все, что не является \ или /
, этот (.*)
захватывает все остальное до конца строки
Возможно, вы после чего-то более похожего на ^(?:https?://)([^\\/]+)(.*)$
, возможно, захотите рассмотреть полный синтаксис URL в соответствии с
file:// /C:/temp/app/example.html
file:// C : /temp/app/example.html
file:// C : \temp\app\example.html
http://user@www.hotmail.passport.login.net:8080/test/url.htm?view=smart
[method][ server ][ path ][optional]
[user][ domain ][port]
Тогда ваш заголовок для регулярного выражения будет больше похож на
([a-zA-Z][a-zA-Z0-9\\+\\-\\.]*://)?(([^@/\\\\]+@)?([a-zA-Z0-9_'!~\\-,;&=\\.\\$\\*\\(\\)\\+]+)(:\\d*)?)?([/\\\\][^?]*)?(\\?.*)?