/* package whatever; // don't place package name! */ 
 
import  java.util.* ; 
import  java.lang.* ; 
import  java.io.* ; 
import  java.util.regex.* ; 
/* Name of the class has to be "Main" only if the class is public. */ 
class  Ideone
{ 
	{ 
		String [ ]  URLs 
=  new  String [ ]  {  "http://f...content-available-to-author-only...o.com/blah_blah" , 
"http://f...content-available-to-author-only...o.com/blah_blah/" , 
"http://f...content-available-to-author-only...o.com/blah_blah_(wikipedia)" , 
"http://f...content-available-to-author-only...o.bar?q=Spaces should be encoded"  } ;  		Pattern REGEX =  Pattern.compile ( "(?i)^(?:(?:https?|ftp)://)(?:\\ S+(?::\\ S*)?@)?(?:(?!(?:10|127)(?:\\ .\\ d{1,3}){3})(?!(?:169\\ .254|192\\ .168)(?:\\ .\\ d{1,3}){2})(?!172\\ .(?:1[6-9]|2\\ d|3[0-1])(?:\\ .\\ d{1,3}){2})(?:[1-9]\\ d?|1\\ d\\ d|2[01]\\ d|22[0-3])(?:\\ .(?:1?\\ d{1,2}|2[0-4]\\ d|25[0-5])){2}(?:\\ .(?:[1-9]\\ d?|1\\ d\\ d|2[0-4]\\ d|25[0-4]))|(?:(?:[a-z\\ u00a1-\\ uffff0-9]-*)*[a-z\\ u00a1-\\ uffff0-9]+)(?:\\ .(?:[a-z\\ u00a1-\\ uffff0-9]-*)*[a-z\\ u00a1-\\ uffff0-9]+)*(?:\\ .(?:[a-z\\ u00a1-\\ uffff]{2,}))\\ .?)(?::\\ d{2,5})?(?:[/?#]\\ S*)?$" ) ; 
            Matcher matcher =  REGEX.matcher ( url) ; 
            if  ( matcher.find ( ) )  { 
                System .
out .
println ( matcher.
group ( ) ) ;                } 
 
        } 
 
    } 
} 
 
				LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguKjsKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlTdHJpbmdbXSBVUkxzID0gbmV3IFN0cmluZ1tdIHsgImh0dHA6Ly9mLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5vLmNvbS9ibGFoX2JsYWgiLCAiaHR0cDovL2YuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm8uY29tL2JsYWhfYmxhaC8iLCAiaHR0cDovL2YuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm8uY29tL2JsYWhfYmxhaF8od2lraXBlZGlhKSIsICJodHRwOi8vZi4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uby5iYXI/cT1TcGFjZXMgc2hvdWxkIGJlIGVuY29kZWQiIH07CgkJUGF0dGVybiBSRUdFWCA9IFBhdHRlcm4uY29tcGlsZSgiKD9pKV4oPzooPzpodHRwcz98ZnRwKTovLykoPzpcXFMrKD86OlxcUyopP0ApPyg/Oig/ISg/OjEwfDEyNykoPzpcXC5cXGR7MSwzfSl7M30pKD8hKD86MTY5XFwuMjU0fDE5MlxcLjE2OCkoPzpcXC5cXGR7MSwzfSl7Mn0pKD8hMTcyXFwuKD86MVs2LTldfDJcXGR8M1swLTFdKSg/OlxcLlxcZHsxLDN9KXsyfSkoPzpbMS05XVxcZD98MVxcZFxcZHwyWzAxXVxcZHwyMlswLTNdKSg/OlxcLig/OjE/XFxkezEsMn18MlswLTRdXFxkfDI1WzAtNV0pKXsyfSg/OlxcLig/OlsxLTldXFxkP3wxXFxkXFxkfDJbMC00XVxcZHwyNVswLTRdKSl8KD86KD86W2EtelxcdTAwYTEtXFx1ZmZmZjAtOV0tKikqW2EtelxcdTAwYTEtXFx1ZmZmZjAtOV0rKSg/OlxcLig/OlthLXpcXHUwMGExLVxcdWZmZmYwLTldLSopKlthLXpcXHUwMGExLVxcdWZmZmYwLTldKykqKD86XFwuKD86W2EtelxcdTAwYTEtXFx1ZmZmZl17Mix9KSlcXC4/KSg/OjpcXGR7Miw1fSk/KD86Wy8/I11cXFMqKT8kIik7CgkJZm9yIChTdHJpbmcgdXJsIDogVVJMcykgewogICAgICAgICAgICBNYXRjaGVyIG1hdGNoZXIgPSBSRUdFWC5tYXRjaGVyKHVybCk7CiAgICAgICAgICAgIGlmIChtYXRjaGVyLmZpbmQoKSkgewogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG1hdGNoZXIuZ3JvdXAoKSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgICAgIAogICAgfQp9