expression substitution

Hi, I would like to use regexprep to substitute a simple expression for another in a text.
As an example, I have the following expression A=g*ABC+(1-g)*(CAD+d*EEA)+ZI/A , and would like to replace all occurrences of the word A with A_subs. The result would be A_subs=g*ABC+(1-g)*(CAD+d*EEA)+ZI/A_subs . Could you suggest a simple call to regexprep that would do this? Thanks, Junior

2 commentaires

Friedrich
Friedrich le 19 Août 2011
So the ABC part has to stay and should not become A_subsBC?
Junior
Junior le 19 Août 2011
Hi Friedrich, the answer to your question is yes.

Connectez-vous pour commenter.

Réponses (2)

David Young
David Young le 19 Août 2011

1 vote

s = 'A=g*ABC+(1-g)*(CAD+d*EEA)+ZI/A';
regexprep(s, '(^|\W)A($|\W)', '$1A_subs$2')
EDIT: See Walter Roberson's comment for a more elegant solution.

4 commentaires

Walter Roberson
Walter Roberson le 19 Août 2011
s = 'A=g*ABC+(1-g)*(CAD+d*EEA)+ZI/A';
regexprep(s, '(\<A\>)', '$1_subs')
Oleg Komarov
Oleg Komarov le 19 Août 2011
@Walter: very elegant.
Andrei Bobrov
Andrei Bobrov le 20 Août 2011
Hi David, +1.
Hi Walter, super nice!
David Young
David Young le 20 Août 2011
Hi Andrei: thanks.
Hi Walter: wish I'd spotted that!

Connectez-vous pour commenter.

Andrei Bobrov
Andrei Bobrov le 19 Août 2011

0 votes

char(subs('A = ABC*g + ZI/A - (CAD + EEA*d)*(g - 1)','A','A_subs'))
ADD MORE variant
str='A=g*ABC+(1-g)*(CAD+d*EEA)+ZI/A'
t = regexp(str,'A=|[*/-+=]+A+$|[*/-+=]+A+[*/-+=]')
str2 = mat2cell(str,1,[1 diff(t) 1])
str2(strcmp(str2,'A'))={'A_subs'}
strout = cell2mat(str2)

2 commentaires

Friedrich
Friedrich le 19 Août 2011
Little note: this works but requires Symbolic Math Toolbox.
Junior
Junior le 19 Août 2011
Hi Andrei, thanks for the answer. It is precisely a problem with the symbolic math toolbox that brought me here. Try replacing "A" with "I" and you will see it does not work. I need to do some substitutions before passing the expression to the symbolic math toolbox.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Deep Learning Toolbox dans Centre d'aide et File Exchange

Question posée :

le 19 Août 2011

Community Treasure Hunt

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

Start Hunting!

Translated by