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 comentarios

Friedrich
Friedrich el 19 de Ag. de 2011
So the ABC part has to stay and should not become A_subsBC?
Junior
Junior el 19 de Ag. de 2011
Hi Friedrich, the answer to your question is yes.

Iniciar sesión para comentar.

Respuestas (2)

David Young
David Young el 19 de Ag. de 2011

1 voto

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 comentarios

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

Iniciar sesión para comentar.

Andrei Bobrov
Andrei Bobrov el 19 de Ag. de 2011

0 votos

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 comentarios

Friedrich
Friedrich el 19 de Ag. de 2011
Little note: this works but requires Symbolic Math Toolbox.
Junior
Junior el 19 de Ag. de 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.

Iniciar sesión para comentar.

Categorías

Más información sobre Deep Learning Toolbox en Centro de ayuda y File Exchange.

Preguntada:

el 19 de Ag. de 2011

Community Treasure Hunt

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

Start Hunting!

Translated by