using regexp for strings with space delimited inside text file
    6 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    sermet
      
 el 27 de Ag. de 2016
  
    
    
    
    
    Editada: per isakson
      
      
 el 27 de Ag. de 2016
            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 comentarios
Respuesta aceptada
  per isakson
      
      
 el 27 de Ag. de 2016
        
      Editada: per isakson
      
      
 el 27 de Ag. de 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 comentarios
Más respuestas (0)
Ver también
Categorías
				Más información sobre Characters and Strings en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

