using regexp for strings with space delimited inside text file
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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?
0 commentaires
Réponse acceptée
per isakson
le 27 Août 2016
Modifié(e) : per isakson
le 27 Août 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"   space shouldn't be a problem. However, the parentheses, (), requires an escape character, \( and \), respectively.
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Characters and Strings dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!