Using regexp to capture parts of a filename

조회 수: 20 (최근 30일)
Mary
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

채택된 답변

Azzi Abdelmalek
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
Mary 2013년 6월 10일
this works wonderfully - Thanks!

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Jonathan Sullivan
Jonathan Sullivan 2013년 6월 10일
Your slash is the wrong way. Try:
experimentName =regexp(str,'DD2CM(\d*)','match')
  댓글 수: 1
Mary
Mary 2013년 6월 10일
my bad - I made this error while retyping. Thank you for the reply!

댓글을 달려면 로그인하십시오.


Daniel Shub
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
Mary 2013년 6월 10일
I'll give this a try! - Thank you :)

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Startup and Shutdown에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by