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 Kommentare

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

Melden Sie sich an, um zu kommentieren.

Antworten (2)

David Young
David Young am 19 Aug. 2011

1 Stimme

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 Kommentare

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

Melden Sie sich an, um zu kommentieren.

Andrei Bobrov
Andrei Bobrov am 19 Aug. 2011

0 Stimmen

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 Kommentare

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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Deep Learning Toolbox finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 19 Aug. 2011

Community Treasure Hunt

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

Start Hunting!

Translated by