Extract value until regexp case match

2 views (last 30 days)
Dyel on 23 Sep 2022
Commented: Dyel on 26 Sep 2022
I have this string. I was hoping to use regexp in order to extract the time and date embedded in this string. I was going to use regexp '.*?<=216', as prior to 216 is all the values I was hoping to extract. I was hoping that there would be an easy way to extract the date and time to a separate cell array. Thanks for any and all help.
"9/12/2022 7:38:51 PM
216 Indicator"
Dyel on 23 Sep 2022
Is there a way using regexp to extract the datetime value, or something similar from a char array?

Sign in to comment.

Accepted Answer

Stephen23 on 23 Sep 2022
Does the data you want to match always occur at the start of the string?
A = "9/12/2022 7:38:51 PM 216 Indicator";
B = regexp(A,'^\S+\s+\S+\s[AP]M','match','once')
B = "9/12/2022 7:38:51 PM"
T = datetime(B,'inputFormat','d/M/u h:m:s aa')
T = datetime
09-Dec-2022 19:38:51
  1 Comment
Dyel on 26 Sep 2022
This did the trick. Thanks Stephen.
How I did it was to split it up using the SplitString fuction, and then convert the string with the date to datetime, in case anyone may find it useful.
for j = 1:length(cf)
loopname = cf(j).name;
filetext = fileread(loopname);
txtStr = convertCharsToStrings(filetext);
indVal{i,j} = cell2mat(regexp(filetext, '(?<=Indicator[^0-9]*)[+-]?[0-9]*\.?[0-9]+', 'match'));
splitStr = regexp(txtStr,'\n','split');
dateStr = splitStr{1};
date = datetime(dateStr);
dateVal{i,j} = date;

Sign in to comment.

More Answers (0)


Find more on Characters and Strings in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!