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

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

댓글을 달려면 로그인하십시오.

답변 (2개)

David Young
David Young 2011년 8월 19일

1 개 추천

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

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

댓글을 달려면 로그인하십시오.

Andrei Bobrov
Andrei Bobrov 2011년 8월 19일

0 개 추천

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

Friedrich
Friedrich 2011년 8월 19일
Little note: this works but requires Symbolic Math Toolbox.
Junior
Junior 2011년 8월 19일
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.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Deep Learning Toolbox에 대해 자세히 알아보기

질문:

2011년 8월 19일

Community Treasure Hunt

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

Start Hunting!

Translated by