Regex pour l’expression mathématique

J’ai un problème avec regex C ++, et j’espère que quelqu’un pourrait offrir de l’aide. 🙂

Actuellement, sur la base de “rxAssign” comme indiqué ci-dessous, je suis capable de détecter une expression mathématique ressemblant à:

  1. x = x;
  2. x = a + 3 * 90 – b;
  3. x = 4; }
  4. x = a + 3 * 90 – b; }}

Cependant, j’ai besoin de quelques modifications pour pouvoir accepter le crochet rond ouvert “(” et le crochet rond étroit “)” pour une expression mathématique telle que:

  1. x = (x);
  2. x = a + ((3 * 90) – b);
  3. x = 4; }
  4. x = (((a + 3) * 90) – b); }}

Est-il possible de modifier mon implémentation actuelle pour accepter les crochets ouverts / fermés? Il pourrait encore y avoir une expression sans parenthèse arrondie. J’ai rxOpen et rxClose, qui représentent aussi bien les crochets ronds ouverts que fermés, mais je ne sais pas comment les insérer

rxAssign = regex("^\\s*(" + rxstrIdentifier + ")\\s*=\\s*((" + rxstrRef + ")((\\s*([\-+*])\\s*(" + rxstrRef + "))*))\\s*[;]\\s*([} ])*\\s*$"); 

 ssortingng rxstrIdentifier = "\\b[a-zA-Z]\\w*\\b"; ssortingng rxstrConstant = "\\b\\d+\\b"; ssortingng rxstrRef = "(?:" + rxstrIdentifier + ")|(?:" + rxstrConstant + ")"; // identifier or constant ssortingng rxOpen = "[(]"; ssortingng rxClose = "[)]";