Предположим, вы прочитали свой файл в эту строку:
My dog has fleas.
CARTESIAN COORDINATES (ANGSTROEM)
---------------------------------
C -0.283576 -0.776740 -0.312605
H -0.177080 -0.046256 -1.140653
Cl -0.166557 0.025928 1.189976
----------------------------
My cat too.
Затем вы можете извлечь строки 4, 5 и 6 с регулярным выражением
/CARTESIAN COORDINATES \(ANGSTROEM\)\r?\n---------------------------------\r?\n(.+?)(?=\r?\n\r?\n)/s
demo
Это выражение гласит: «соответствует строке« CARTENSION ...--- \ r? \ N », за которой следуют жадные совпадения 1+ символов в группе захвата 1, за которыми следует пустая строка с флаг '/ s' для включения '.' для совпадения концов строк ".
Затем можно извлечь нужную информацию с помощью регулярного выражения
/ *([A-Z][a-z]*) +(-?\d+.\d{6}) +(-?\d+.\d{6}) +(-?\d+.\d{6})\r?\n/
demo
Первый шаг можно пропустить, если достаточно найти строку, которая выглядит следующим образом:
C -0.283576 -0.776740 -0.312605
без необходимости подтверждения, что перед ней стоит "CARTESIAN ...---".
демо