Fraction or percentage regular expression
Your regex accepts (20/) as valid input, and I suspect that you didn't intend to consider it valid.

Your regex rejects one-digit numbers.  If that is intentional, you might want to write a comment about it in the code.



As you suspected, this is a very "noisy" regex — nearly unreadable.  This expression would do the job:

String regex = "\\( *(\\d{2}) *(?:/ *(\\d{2}) *)?\\)";


There is no need to wrap everything in [ ].  In this particular problem, there aren't even any character classes to speak of.  The only place where the square brackets might be justified is as a hack to formulate the expression with fewer backslashes:

String regex = "[(] *(\\d{2}) *(?:/ *(\\d{2}) *)?[)]";


In (?:[ ]*)?, the square brackets are pointless.  The ? is redundant with *.  So, you can just write a space followed by *.

In ([\d][\d]), the square brackets are pointless, and I would slightly prefer seeing (\d{2}) to (\d\d), since it can more easily be modified to accommodate different numbers of digits.

You might want to consider naming the capture groups for clarity:

String regex = "\\( *(?&lt;numerator&gt;\\d{2}) *(?:/ *(?&lt;denominator&gt;\\d{2}) *)?\\)";