import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(\\${1,2})[^]*?[^\\\\]\\1|[^\\$]+";
final String string = "some text outside $ \\$2+\\$ $ which includes $\\$$\n"
+ "Now some $${}$$ $\\{\\}$inline mathjax $2+2$\n"
+ "And in new lines\n"
+ "$$\n"
+ "2+2\n"
+ "$$\n"
+ "$\n"
+ "2+2\\\\\n"
+ "3+3\\\\\n"
+ " 4+4\\\\\n"
+ "$\n"
+ "more inline $2+2\\$ \\$2+2$ $2+2$, $3+4$\n"
+ "separated $2+2$ by some text $ 2+2 $ again\n"
+ "double newlines\n"
+ "$2+2$\n"
+ "$2+2$\n"
+ "Dollar again $ \\$42 $\n"
+ "$$ \\$42 $$\n"
+ "$$\n"
+ " \\frac{4}{2}+\n"
+ " \\frac{4}{2}\n"
+ "$$\n\n"
+ "And some more tests:\n"
+ "\\> a) $\\dr{1}{2}+\\left(\\dr23-\\dr34\\right)$<<<\n"
+ " \\> b) $\\dr{1}{5}+\\left(\\dr23-\\dr12\\right)$<<<\n"
+ " \\> c) $\\dr{1}{2}+\\left(\\dr{3}{4}-\\dr32\\right)$<<<\n"
+ " \\> d) $\\left(\\dr{3}{10}-\\dr{5}{2}\\right)+\\dr7{20}$<<<\n"
+ " \\> e) $\\dr{2}{3}+\\left(\\dr{3}{2}-\\dr14\\right)$<<<\n"
+ " \\> f) $\\left(\\dr{14}{5}-\\dr7{10}\\right)+\\dr{11}{10}$.<<<\n\n"
+ "$$\n"
+ " a^{\\rr mn}=\\sq[n]{a^m}.\n"
+ "$$\n\n"
+ "$$\n"
+ "\\begin{align}\n"
+ "&a^x\\cdot a^y=a^{x+y}\\\\\n"
+ "&\\dr{a^x}{a^y}=a^{x-y}\\\\\n"
+ "&(a^x)^y=a^{xy}\\\\\n"
+ "&(ab)^x=a^xb^x\\\\\n"
+ "&\\left(\\dr ab\\right)^x=\\dr{a^x}{b^x}.\n"
+ "\\end{align}\n"
+ "$$\n\n"
+ "$$\n"
+ " \\sq[4]{5\\sq5}=(5\\sq5)^{\\rr14}=(5\\.5^{\\rr12})^{\\rr14}=\n"
+ " (5^{1+\\rr12})^{\\rr14}=(5^{\\rr32})^{\\rr14}=5^{\\rr38}.\n"
+ " $$\n\n"
+ "Hope that's it.\n\n\n";
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