clear
clc
Dnn=1.5e-32*i2x + 5.62e-65*i3x + 5.62e-65*i4x + 5.62e-65*i5x + i6x + i7x + i2y + 1.5e-32*i3y + 1.5e-32*i4y + 1.5e-32*i5y + 3.75e-33*i6y + 1.5e-32*i7y + i1z + i3z + i4z + i5z + 1.5e-32*i6z + 3.75e-33*i7z + 0.25*l1^2*m1 + l1^2*m2 + l1^2*m3 + 3.75e-33*l2^2*m2 + l1^2*m4 + 1.5e-32*l2^2*m3 + l1^2*m5 + 1.5e-32*l2^2*m4 + 0.25*l3^2*m3 + l1^2*m6 + 1.5e-32*l2^2*m5 + 1.0*l3^2*m4 + l1^2*m7 + 1.5e-32*l2^2*m6 + 1.0*l3^2*m5 + 0.25*l4^2*m4 + 1.5e-32*l2^2*m7 + 1.0*l3^2*m6 + 1.0*l4^2*m5 + 1.0*l3^2*m7 + 1.0*l4^2*m6 + 3.75e-33*l5^2*m5 + 1.0*l4^2*m7 + 1.5e-32*l5^2*m6 + 1.5e-32*l5^2*m7 + 0.25*l6^2*m6 + 1.0*l6^2*m7 + 0.25*l7^2*m7 + l1*l3*m3 + 2.0*l1*l3*m4 - 7.5e-33*l2*l3*m3 + 2.0*l1*l3*m5 + l1*l4*m4 - 1.5e-32*l2*l3*m4 + 2.0*l1*l3*m6 + 2.0*l1*l4*m5 - 1.5e-32*l2*l3*m5 - 7.5e-33*l2*l4*m4 + 2.0*l1*l3*m7 + 2.0*l1*l4*m6 - 1.5e-32*l2*l3*m6 - 1.5e-32*l2*l4*m5 + 1.0*l3*l4*m4 + 2.0*l1*l4*m7 - 1.5e-32*l2*l3*m7 - 1.5e-32*l2*l4*m6 + 1.5e-32*l2*l5*m5 + 2.0*l3*l4*m5 - 6.12e-17*l1*l6*m6 - 1.5e-32*l2*l4*m7 + 3.0e-32*l2*l5*m6 + 2.0*l3*l4*m6 - 7.5e-33*l3*l5*m5 - 1.22e-16*l1*l6*m7 + 3.0e-32*l2*l5*m7 - 1.22e-16*l2*l6*m6 + 2.0*l3*l4*m7 - 1.5e-32*l3*l5*m6 - 7.5e-33*l4*l5*m5 + l1*l7*m7 - 2.45e-16*l2*l6*m7 - 1.5e-32*l3*l5*m7 - 1.5e-32*l4*l5*m6 - 7.5e-33*l2*l7*m7 - 1.5e-32*l4*l5*m7 + 1.0*l3*l7*m7 - 1.22e-16*l5*l6*m6 + 1.0*l4*l7*m7 - 2.45e-16*l5*l6*m7 - 7.5e-33*l5*l7*m7 + 1.23e-32*l6*l7*m7;
expression = ' \+ | \- ';
Dnnstr=char(Dnn);
% [eee,fff,splitStr ]= regexp(Dnnstr,expression,'start','end','split')
%使用正则表达式将结果在+-号处分开
[qishidian,jieshudian,splitStr]= regexp(Dnnstr,expression,'start','end','split');
nn=size(splitStr,2);
newstr='';
for i=1:nn
str1=splitStr{1,i};
zaifenjie=regexp(str1,'\*','split');
%需要判断第一个表达式是不是数,如果不是,则继续,则说明这一项
%开头不是一个数,而是一个变量,没必要进行系数大小的判断
dybf=regexp(zaifenjie{1,1},'[^e0-9.-]');
if ~isempty(dybf)
if i==1
newstr=[newstr,str1];
else
qsd=qishidian(1,i-1);
jsd=jieshudian(1,i-1);
newstr=[newstr,Dnnstr(1,qsd:1:jsd),str1];
end
continue;
else
xishu=str2num(zaifenjie{1,1});
if xishu<1.0e-15
continue;
else
if i==1
newstr=[newstr,str1];
else
qsd=qishidian(1,i-1);
jsd=jieshudian(1,i-1);
newstr=[newstr,Dnnstr(1,qsd:1:jsd),str1];
end
end
end
end