import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "<p>(\\s*)(<a(.*)>)?(\\s*)(https?:\\/\\/)?(w{3}\\.)?(instagram\\.com)\\/(p\\/)?(?<photoID>[A-Za-z0-9-_]{11})(\\S*)(\\s*)(<\\/a>)?(\\s*)?<\\/p>";
final String string = "Best case\n"
+ "<p>https://www.instagram.com/p/B9XK4J3jVui/</p>\n\n"
+ "Whitespace\n"
+ "<p>\n"
+ " https://www.instagram.com/p/B9XK4J3jVui/\n"
+ "</p>\n\n"
+ "Protocol variations\n"
+ "<p>http://www.instagram.com/p/B9XK4J3jVui/</p>\n"
+ "<p>www.instagram.com/p/B9XK4J3jVui/</p>\n"
+ "<p>instagram.com/p/B9XK4J3jVui/</p>\n\n"
+ "Trailing slash or not\n"
+ "<p>http://www.instagram.com/p/B9XK4J3jVui/</p>\n"
+ "<p>http://www.instagram.com/p/B9XK4J3jVui</p>\n\n\n"
+ "Linked\n"
+ "<p><a href=\"http://www.instagram.com/p/B9XK4J3jVui/\">http://www.instagram.com/p/B9XK4J3jVui/</a></p>\n"
+ "<p>\n"
+ " <a href=\"http://www.instagram.com/p/B9XK4J3jVui/\">\n"
+ " http://www.instagram.com/p/B9XK4J3jVui/\n"
+ " </a>\n"
+ "</p>\n\n"
+ "Extraneous URL params\n"
+ "<p>https://www.instagram.com/p/B9XK4J3jVui?foo=bar</p>\n"
+ "<p>https://www.instagram.com/p/B9XK4J3jVui?foo=bar&baz=buzz</p>";
final Pattern pattern = Pattern.compile(regex);
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