Localize the third vector position using regexp

1 visualización (últimos 30 días)
Roderick
Roderick el 23 de Dic. de 2023
Respondida: Stephen23 el 23 de Dic. de 2023
Hello everyone,
I am analyzing some data files in a loop, which look like this:
#------------------------------------------------------
# Atomistic spin configuration file for vampire v5+
#------------------------------------------------------
# Date: Thu Dec 21 02:16:27 2023
#------------------------------------------------------
Time: 1e-10
Field: -0 -0 -3
Temperature: 0
Magnetisation: 0.0276355 0.000325712 -0.999618
#------------------------------------------------------
Number of spin files: 1
spins-00000000.data
In particular, I am interested in the information localized after "Field:", which has the form of a three-dimensional vector (-0,-0,-3). I want to be able to have access to the third component of this vector, "-3". If I use:
field_str=regexp(meta_file_read,'(?<=^Field:\s+)\S+','match','lineanchors');
I am able to obtain the information localized in the first component of the field vector, "-0". Is there an efficient way to access the third component of the field vector using regexp?

Respuesta aceptada

Stephen23
Stephen23 el 23 de Dic. de 2023
txt = fileread('test.txt')
txt =
'#------------------------------------------------------ # Atomistic spin configuration file for vampire v5+ #------------------------------------------------------ # Date: Thu Dec 21 02:16:27 2023 #------------------------------------------------------ Time: 1e-10 Field: -0 -0 -3 Temperature: 0 Magnetisation: 0.0276355 0.000325712 -0.999618 #------------------------------------------------------ Number of spin files: 1 spins-00000000.data'
rgx = '(?<=Field(\S+\s+){3})\S+';
out = regexp(txt,rgx,'once','match')
out = '-3'

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements 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!

Translated by