使用regexp捕获文件名的部分

21次(最近30天)
玛丽
玛丽 2013年6月10日
我有一个类似的文件名
Exp000\u DD2CM000\u PN000\u块1\u预先决定
我需要提取这个文件名的不同部分,并使用它们来确定循环if语句的路径。
例如:
我需要它来加载文件,确定file=Exp000\u DD2CM000\u PN000\u block1\u predecision experimentName=DD2CM000 participantName=PN000 block=1 type=pre或post
如果类型=预
...
elseif类型=post
... 密码
终止
现在我正在使用
>>experimentName=regexp(str,'DD2CM(/d*)','match')
没有任何运气。
有什么想法吗?
-毫升

公认的答案

阿兹·阿卜杜勒马莱克
编辑:阿兹·阿卜杜勒马莱克 2013年6月10日
x=“Exp000\u DD2CM000\u PN000\u块1\u预决策”
a=regexp(x,'_',“分裂”)
实验名称=a{2}
participantName=a{3}
block=regexp(a{4},“\d*”)
类型=a{5}

更多答案(2)

乔纳森•沙利文
乔纳森•沙利文 2013年6月10日
您的斜杠方向错误。请尝试:
实验名称=regexp(str,“DD2CM(\d*)”,“比赛”)
1评论
玛丽
玛丽 2013年6月10日
我的错-我在重新键入时出错。谢谢你的回复!

登录以发表评论。


丹尼尔Shub
丹尼尔Shub 2013年6月10日
编辑:丹尼尔Shub 2013年6月10日
根据文件名的结构,跳过regexp部分可能更容易。
文件=“Exp000\u DD2CM000\u PN000\u块1\u预决策”;
x=strfind(文件,'_');
f = @ (n m x) x ((m (n) + 1): (m (n + 1) 1));
实验名称=f(2,[0,x,长度(文件)],文件);
[0, x, length(file)], file);
块=f(4,[0,x,长度(文件)],文件);
类型=f(5,[0,x,长度(文件)],文件);
然后你只想扔掉每个变量的一部分
姓名(6:完)
参与者姓名(3:结束)
区块(6:结束)
类型(1:3)
数据的结构可能更自然地适合
实验名称(end-2:end)
participantName (end-2:结束)
块(结束)
类型(1:3)

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始狩猎!

翻译人