MATLAB Answers

Mary
2

Using regexp to capture parts of a filename

Mary
さんによって質問されました 2013 年 6 月 10 日
I have a filename that is something like
Exp000_DD2CM000_PN000_block1_predecision
I need to extract different parts of this filename and use them to determine which path for a looping if statement to take.
For example:
I need it to load the file determine that file = Exp000_DD2CM000_PN000_block1_predecision experimentName = DD2CM000 participantName = PN000 block= 1 type = pre or post
if type = pre
...
elseif type = post
... code
end
right now I'm using
>> experimentName =regexp(str,'DD2CM(/d*)','match')
without any luck.
any ideas?
- ML

  0 件のコメント

サインイン to comment.

3 件の回答

回答者: Azzi Abdelmalek
2013 年 6 月 10 日
編集済み: Azzi Abdelmalek
2013 年 6 月 10 日
 採用された回答

x='Exp000_DD2CM000_PN000_block1_predecision'
a=regexp(x,'_','split')
experimentName = a{2}
participantName = a{3}
block=regexp(a{4},'\d*')
type = a{5}

  1 件のコメント

Mary
2013 年 6 月 10 日
this works wonderfully - Thanks!

サインイン to comment.


回答者: Jonathan Sullivan 2013 年 6 月 10 日

Your slash is the wrong way. Try:
experimentName =regexp(str,'DD2CM(\d*)','match')

  1 件のコメント

Mary
2013 年 6 月 10 日
my bad - I made this error while retyping. Thank you for the reply!

サインイン to comment.


回答者: Daniel Shub
2013 年 6 月 10 日
編集済み: Daniel Shub
2013 年 6 月 10 日

Depending on how structured your file names are, it might be easier to skip the regexp part.
file = 'Exp000_DD2CM000_PN000_block1_predecision';
x = strfind(file, '_');
f = @(n,m,x)x((m(n)+1):(m(n+1)-1));
experimentName = f(2, [0, x, length(file)], file);
participantName = f(3, [0, x, length(file)], file);
block = f(4, [0, x, length(file)], file);
type = f(5, [0, x, length(file)], file);
Then you just want to throw out parts of each variable
experimentName(6:end)
participantName(3:end)
block(6:end)
type(1:3)
The structure of your data might more naturally fit
experimentName(end-2:end)
participantName(end-2:end)
block(end)
type(1:3)

  1 件のコメント

Mary
2013 年 6 月 10 日
I'll give this a try! - Thank you :)

サインイン to comment.



Translated by