The above regular expression might not be what you're after since it will have problems with nested sets of parentheses.
The original post isn't very precise in saying what the expected inputs and outputs should be. Do you just want to 'get' the text between parentheses, or delete that text. Define 'text', is that anything at all?
Anyway, here's my two pennies.
Of course, that is a bit of a mouthful! An example of its use would be:
\( # Opening parenthesis
(?> # Start once-only sub-pattern
[^()]+ # One or more non-parenthesis characters
| # Or
(?R) # Recursive match of the entire pattern (ie, nested parentheses)
)* # End once-only sub-pattern, match it zero or more times
\) # Closing parenthesis
If you want to keep the wrapping parentheses, just include them in the replacement.
$text = 'This is (not) a (quick (useful)) test.';
echo preg_replace('/\((?>[^()]+|(?R))*\)/', '', $text); // This is a test.