Это окончательное регулярное выражение:
\(
(?
(
([^\(\)']*) |
(\([^\(\)']*\)) |
'(.*?)'
)*
)
\)
Пример:
input: ( arg1, arg2, arg3, (arg4), '(pip' )
output: arg1, arg2, arg3, (arg4), '(pip'
обратите внимание, что '(pip'
правильно управляется как строка. (проверено в регуляторе: http://sourceforge.net/projects/regulator/ )