using regexp for strings with space delimited inside text file

1 view (last 30 days)
I have a text file whose inside as follows;
ID: 01
Eccentricity: 0.5846023560E-002
Time of Applicability(s): 405504.0000
Orbital Inclination(rad): 0.9652538155
Rate of Right Ascen(r/s): -0.7828897534E-008
SQRT(A) (m 1/2): 5153.587402
Right Ascen at Week(rad): 0.2494223175E+001
Argument of Perigee(rad): 0.529637577
Mean Anom(rad): 0.1359485230E+001
I can extract particular string without space inside text as follows (from Azzi Abdelmalek answer);
fid=fopen('data.txt')
s=fgetl(fid)
out={}
while ischar(s)
out{end+1}=regexp(s,'(?<=(ID:))\s+\S+','match','once')
s=fgetl(fid);
end
fclose(fid)
idx=~cellfun(@isempty,out);
out=strtrim(reshape(out(idx),1,[]))'
But when it comes to other strings with space delimited (Time of Applicability(s): and the others) above codes don't work. How can I modify above codes to work consistently with space delimited strings?

Accepted Answer

per isakson
per isakson on 27 Aug 2016
Edited: per isakson on 27 Aug 2016
It seems that : can be used delimiter between "label" and value.
I would read this file with
fid = fopen('data.txt');
cac = textscan( fid, '%s%f', 'Delimiter',':', 'Whitespace','' );
fclose(fid);
Inspect the result
>> cac{1}(3)
ans =
'Time of Applicability(s)'
>> cac{2}(3)
ans =
405504
Your code will work if you replace
'(?<=(ID:))\s+\S+'
by
'(?<=(:))\s+\S+'
"work consistently with space delimited strings" &nbsp space shouldn't be a problem. However, the parentheses, (), requires an escape character, \( and \), respectively.

More Answers (0)

Categories

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

Tags

Community Treasure Hunt

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

Start Hunting!