Regex pour vérifier si une chaîne de caractères sont incompatibles entre parenthèses?

Dans un script PHP, ce regex dois-je utiliser pour vérifier incompatibles entre parenthèses dans une chaîne de caractères? Les choses que je veux permettre à inclure:

  • C'est (ok)
  • Ceci (est) (ok)

Choses que je veux éviter:

  • C'est )mauvais(
  • C'est aussi (mauvaise
  • C'est la (mauvaise (trop)

Merci!

Mise à jour: les gars, Vous tous rock. De le faire avec une regex semblait plus délicat qu'il doit avoir, et ces sortes de 2ème niveau des réponses sont ce qui rend stackoverflow belle. Merci pour les liens et le pseudo-code. Je ne sais pas à qui donner la réponse, alors je m'excuse auprès de tous ceux dont les réponses que je ne peux pas accepter.

Avez-vous besoin d'arbitraire parenthèses imbriquées ou vous connaissez pour sûr qu'il n'y a pas plus de un niveau fixe (par exemple, 5 niveaux de profondeur) de nidification possible dans toute la chaîne d'entrée?
Les chaînes sont limitées à environ 300 caractères. Il est certainement possible d'obtenir 300 (s dans une rangée. Ah, la saisie de l'utilisateur 🙂

OriginalL'auteur twk | 2009-02-18