嵌套的索引在一行命令

8视图(30天)
是否可以提取不同的数据在以下结构使用一行命令字符串?
经验={乔治:A5 = = BB,…
安娜:C3 = = DD,…
史密斯:E2 = = FFF,…
“肯:八国集团= = HHHH’字符};
例如,最明显的方法来提取HHHH如下:字符
mystr1 =分裂(exp(结束),':',2);
mystr2 =分裂(mystr1 (:, 2), ' = = ', 2);
mystr2(结束)
你能建议一行命令提取HHHH ?字符请注意所有的名字,右手和左手的方程可以用不同的长度或任何字符。只:= =字符不变。代码应该是普遍意义它应该提取任何(指数3和1史密斯为C3或索引或索引2和2结束,结束HHHH)字符只使用一行命令。
4评论
S H
S H 2019年1月14日
好的,我会试试。谢谢。

登录置评。

接受的答案

史蒂文的主
史蒂文的主 2019年1月14日
利用从鲍勃Nbob答案的评论:
mystr = regexp (exp{}结束,“\ W”,“分裂”);mystr = mystr{}结束;
这是一行(虽然不是一个命令。)
索引的类型被问及不存在,至少没有直接。你 可以 写一个显式的调用 subsref 在一个命令,但在我看来它会比写更清楚这两个命令。有特殊原因需要在一个命令?
如果你想做这个使用在一个匿名函数在一个脚本中,和你使用 R2016b或更高版本 而不是考虑创建一个本地函数在脚本文件。
1评论
S H
S H 2019年1月14日
我想写一个内存高效prgram。这是很长时间。代码将不会有效,如果每一个计算,应该创建一个临时变量,然后删除。
我想使用一个函数有助于我实现我所需要的东西。至少,功能有自己的工作区由Matlab在使用删除功能。
谢谢。

登录置评。

答案(1)

Stephen23
Stephen23 2019年1月14日
编辑:Stephen23 2019年1月14日
> > C = {乔治:A5 = = BB的;“安娜:C3 = = DD”;“史密斯:E2 = = FFF”;“肯:八国集团= = HHHH”字符};
> > D = regexp (C,“^ (\ w +): \ s * (\ w +) \ s * = = \ s * (\ w +)”,“令牌”,“一次”);
> > horzcat (D {:})%或VERTCAT,这取决于您的需要。
ans =
[1]=乔治
(2,1)= A5
(3,1)= BB
[1,2]=安娜
(2,2)= C3
[3 2]=弟弟
史密斯[1,3]=
[2、3]= E2
3,3 = FFF
[1,4]=肯
(2、4)=八国集团
(3、4)= HHHH。字符
4评论
沃尔特·罗伯森
沃尔特·罗伯森 2019年1月14日
C = {乔治:A5 = = BB的;“安娜:C3 = = DD”;“史密斯:E2 = = FFF”;“肯:八国集团= = HHHH”字符};
disp (char (regexprep (C,“^ * = = \ s *。”,)))

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!