Using regular expression to read part of the filename

5 次查看(过去 30 天)
Good afternoon,
I am attempting to use a regular expression feature to read part of the file that is generated by the microscope camera.
The file format is x_yyyymmdd_hhmmSSsss where small s is the milisecond and x is the number of the timelapsed photo.
I am trying to convert (truncate) say 5_20180927_161742655 to 20180927_161742 so that I can use this as a timestamp more easily.
Any help would be appreciated. Thank you.

采纳的回答

Stephen23
Stephen23 2018-10-2
编辑:Stephen23 2018-10-2
>> str = '5_20180927_161742655';
>> regexp(str,'(?<=_)\d{8}_\d{6}','match','once')
ans = 20180927_161742
Note that the input str can also be a cell array of char vector, or a string array.

更多回答(1 个)

dpb
dpb 2018-10-1
编辑:dpb 2018-10-2
AMMENDED -- dpb
Don't need regular expressions for that purpose, just select the first N-3 characters in the file name...
S=15; % sublength of wanted string (15)
[~,TS]=fileparts(fname); % return the file name w/o path, extension
L=length(TS); % just get the overall length
TS=TS(L-(S+3)+1:L-3); % pick up between file and sss millisec portion
Alternatively, one can
L1=find(fn=='_',1)+1; % location just past first underscore
TS=TS(L1:L-3); % pick up between file and sss
NB: fileparts will return the name as either char array or cellstr depending on input form for fanme going in so may need to dereference a cell string if that is the form.
I'm sure there is a regexp expression that will work but I'm just not adept with its syntax, sorry...
  2 个评论
anton spektorov
anton spektorov 2018-10-1
Thank you dpb!
Unfortunately the number/numbers before the first underscore can go to double and triple digits giving me no easy way to truncate that portion. The milliseconds removal worked perfectly though. Since the entire string should always be yyyymmdd_hhmmss which is 15 spaces counting the underscore is there a way to count 15 from the end once the last 3 characters are removed? Thank you for such a fast reply.
dpb
dpb 2018-10-1
编辑:dpb 2018-10-2
Oh, my bad; I didn't notice you'd truncated the first set; makes perfect sense to have done, granted! :)
I updated the ANSWER to handle that situation; just locate the first underscore first.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Workspace Variables and MAT Files 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by