Ну как вариант, можно с помощью такого выражения \((?=[^\(]*\)).*?\) последовательно заменить все скобки на пробелы (оно убирает самую вложенную скобку), а дальше поискать в строке "(" либо ")", если найдем, значит баланс кривой.
Но проще все таки для балансировки два счетчика и один проход по строке :)