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 个评论

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

请先登录,再进行评论。

回答(2 个)

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 个评论

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

请先登录,再进行评论。

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 个评论

Little note: this works but requires Symbolic Math Toolbox.
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