import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
    public static void main(String[] args) {
        final String regex = "(?<!\\\\)(?:\\[{2}[^\\n|]+(?:\\|[^\\n]+)?]]|\\[[^\\n]+]\\([^\\n:]+\\))";
        final String string = "[[Link name|title]]\n\n"
	 + "[[Link name]]\n\n"
	 + "[[do not\n"
	 + "|match]]\n"
	 + "[I am not a link]]\n"
	 + "some (text) [[Link]] more [text]\n\n"
	 + "\\[[This is not a link]]\\[[[this is|a link]] foo bar ]\n\n"
	 + "[[Folder Name/Link|link]]\n\n"
	 + "[[Folder/other folder/file|label]]\n\n"
	 + "[[]]\n"
	 + "[[A [link] with brackets]]\n\n"
	 + "[[A [link] with brackets|on [both] sides]]\n\n"
	 + "[[A [bracket] folder/A [link] with brackets|on [both] sides]]\n\n"
	 + "Markdown: [Three laws of motion](Three%20laws%20of%20motion.md)\n\n"
	 + "\\[Not a link](Three%20laws%20of%20motion.md)\n\n"
	 + "[also\n"
	 + "not](a link)\n\n"
	 + "[This [is] a link](Three%20laws%20of%20motion.md)\n\n"
	 + "[Yes, you can put (parens) and [brackets] in a filename](Yes,%20you%20can%20put%20(parens)%20and%20[brackets]%20in%20a%20filename)\n\n"
	 + "[This is an external link](https://regex101.com)\n\n"
	 + " [[#Preview a linked file]] is a link to a heading in the current document.\n\n"
	 + " [[Obsidian#Links are first-class citizens]] is a link to a heading in another document.\n\n"
	 + "[[Help and support#Questions and advice#Report bugs and request features]] is a link to a subheading in another document.\n\n"
	 + "You can link to a block by adding #^ at the end of your link destination followed by a unique block identifier. For example, [[2023-01-01#^37066d]]";
        
        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