String input = "<p>...<mfrac><mn>[format(((([[B]])*([[C]]))),\"###,##0.######\")]</mn><mn>[[D]]</mn></mfrac></math></p>";
String result = input.replaceAll("<mfrac>(<mn>\\[[^\\\\]+]</mn>)", "<mfrac><mrow>$1</mrow>");
Output:
<p>...<mfrac><mrow><mn>[format(((([[B]])*([[C]]))),"###,##0.######")]</mn><mn>[[D]]</mn></mrow></mfrac></math></p>
Wanted:
<p>...<mfrac><mrow><mn>[format(((([[B]])*([[C]]))),"###,##0.######")]</mn></mrow><mn>[[D]]</mn></mfrac></math></p>
How can I make the regex not greedy? I tried adding "?". Did not help.