import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = " (?(DEFINE)\n"
+ " (?<scheme>[a-z][a-z0-9+.-]*)\n"
+ " (?<userpass>([^:@\\/](:[^:@\\/])?@))\n"
+ " (?<domain>[a-z0-9]+(-[a-z0-9]+)*(\\.[a-z0-9]+(-[a-z0-9]+)*)+)\n"
+ " (?<ip>(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])))\n"
+ " (?<host>((?&domain)|(?&ip)))\n"
+ " (?<port>(:[\\d]{1,5}))\n"
+ " (?<path>([^?;\\#\\s]*))\n"
+ " (?<query>(\\?[^\\#;\\s]*))\n"
+ " (?<anchor>(\\#\\S*))\n"
+ " )\n"
+ " (?:^)?-\\ +((?:(?&scheme):\\/\\/)?(?&userpass)?(?&host)(?&port)?\\/?(?&path)?(?&query)?(?&anchor)?)(?:$|\\s+)";
final String string = "- WWW.TELEGRAM.COM\n\n"
+ "- WWW.c.COM\n"
+ "- t.mE/rrbot\n"
+ "- t.me/rrbot\n\n"
+ "Edit the Expression & Text to see matches. Roll over matches or the expression for details. Undo mistakes with ctrl-z. Save Favorites & Share expressions with friends or the Community. Explore your results with Tools. A full Reference & Help is available in the Library, or watch the video Tutorial.\n\n"
+ "Sample text for testing:\n"
+ "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ\n"
+ "0123456789 _+-.,!@#$%^&*();\\/|<>\"'\n"
+ "12345 -98.7 3.141 .6180 9,000 +42\n"
+ "555.123.4567 +1-(800)-555-2468\n"
+ "foo@demo.net bar.ba@test.co.uk\n"
+ "- www.demo.com - http://foo.co.uk/\n"
+ "- wwww.s.com/something?somethgin=a#asdfadfragment asdfasfsafds\n"
+ "http://regexr.com/foo.html?q=bar\n"
+ "https://mediatemple.net\n\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.COMMENTS);
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