I'm trying to identify the subexpressions of a formula such as (real cases much longer):
y = ((a + b) * (c / d) + ( e + f ))
The subexpressions are always separated by pairs of parenthesis as in the example above. It seems like I should be able to use a regular expression with a rule like (intuitively) match "an initial left parenthesis, any characters (but no parenthesis), and a terminating right parenthesis" to get:
(a + b) (c / d) (e + f)
Can anybody suggest a regular expression to do this? Or any way other than a regular expression?

 Réponse acceptée

Guillaume
Guillaume le 11 Sep 2014
Modifié(e) : Guillaume le 11 Sep 2014

0 votes

subexpressions = regexp(expression, '\([^()]+\)', 'match')
will match any sequence with two brackets enclosing one or more non-bracket.

Plus de réponses (1)

per isakson
per isakson le 11 Sep 2014

1 vote

AFAIK: That is not possible with Matlab's regular expression. Recursion is needed. With Perl (and other languages it is possible). See http://perl.plover.com/yak/regex/samples/slide083.html
"any way other than" &nbsp See parse_equation

Catégories

En savoir plus sur Characters and Strings dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by