import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "([\\w+]+\\:\\/\\/)?([\\w\\d-]+\\.)*[\\w-]+[\\(\\)\\#\\.\\:]\\w+([\\(\\)\\/\\?\\=\\&\\#\\.]?[\\w-]+)*\\/?[\\(\\-\\w\\)\\?\\=\\#_]*";
final String string = "https://daringfireball.net/2010/07/improved_regex_for_matching_urls\n"
+ "Some of the advantages of the new pattern, compared to the previous one:\n"
+ " It no longer uses the [:punct:] named character class. I thought this was universally supported in modern regex engines, but apparently it is not.\n"
+ " It does a better job with URLs containing literal parentheses, correctly matching the following URLs that the previous pattern did not:\n"
+ " .http://foo.com/more_(than)_one_(parens)\n"
+ " http://foo.com/blah_(wikipedia)#cite-1.\n"
+ " http://foo.com/blah_(wikipedia)_blah#cite-1.\n"
+ " http://foo.com/unicode_(✪)_in_parens,\n"
+ " http://foo.com/(something)?after=parens.\n"
+ " It now matches mailto: URLs.\n\n"
+ " It correctly guesses that things like “bit.ly/foo” and “is.gd/foo/” are URLs. Basically: something-dot-something-slash-something.\n"
+ "teste www.google.com teste\n\n"
+ "https://www.facebook.com.\n"
+ "https://app-1.number123.com.\n"
+ "http://facebook.com.\n"
+ "ftp://facebook.com\n"
+ "http://localhost:3000\n"
+ "localhost:3000/\n"
+ "unitedkingdomurl.co.uk\n"
+ "this.is.a.url.com/its/still=going?wow\n"
+ "shop.facebook.org\n"
+ "app.number123.com\n"
+ "app1.number123.com\n"
+ "app-1.numbEr123.com\n"
+ "app.dashes-dash.com\n"
+ "www.facebook.com\n"
+ "facebook.com\n"
+ "fb.com/hello_123\n"
+ "fb.com/hel-lo\n"
+ "fb.com/hello/goodbye\n"
+ "fb.com/hello/goodbye?okay\n"
+ "fb.com/hello/goodbye?okay=alright\n"
+ "Hello www.google.com World http://yahoo.com\n"
+ "https://www.google.com.tr/admin/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services\n"
+ "https://google.com.tr/test/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services\n"
+ "http://google.com/test/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services\n"
+ "ftp://google.com/test/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services\n"
+ "www.google.com.tr/test/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services\n"
+ "www.google.com/test/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services\n"
+ "drive.google.com/test/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services\n"
+ "https://www.example.pl\n"
+ "http://www.example.com\n"
+ "www.example.pl\n"
+ "example.com\n"
+ "http://blog.example.com\n"
+ "http://www.example.com/product\n"
+ "http://www.example.com/products?id=1&page=2\n"
+ "http://www.example.com#up\n"
+ "http://255.255.255.255\n"
+ "255.255.255.255\n"
+ "shop.facebook.org/derf.html\n\n"
+ "Hello www.google.com World http://yahoo.com\n\n"
+ "https://www.google.com.tr/admin/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services\n\n"
+ "https://google.com.tr/test/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services\n\n"
+ "http://google.com/test/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services\n\n"
+ "ftp://google.com/test/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services\n\n"
+ "www.google.com.tr/test/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services\n\n"
+ "www.google.com/test/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services\n\n"
+ "drive.google.com/test/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services\n\n"
+ "Will match the following cases\n\n"
+ " http://www.foufos.gr\n"
+ " https://www.foufos.gr\n"
+ " http://foufos.gr\n"
+ " http://www.foufos.gr/kino\n"
+ " http://werer.gr\n"
+ " www.foufos.gr\n"
+ " www.mp3.com\n"
+ " www.t.co\n"
+ " http://t.co\n"
+ " http://www.t.co\n"
+ " https://www.t.co\n"
+ " www.aa.com\n"
+ " http://aa.com\n"
+ " http://www.aa.com\n"
+ " https://www.aa.com\n\n"
+ "Will NOT match the following\n\n"
+ " www.foufos\n"
+ " www.foufos-.gr\n"
+ " www.-foufos.gr\n"
+ " foufos.gr\n"
+ " http://www.foufos\n"
+ " http://foufos\n"
+ " www.mp3#.com\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html