Поддержка регулярных выражений в языке не предусмотрена.
Есть некая подсистема с поддержкой регулярных выражений, которая использует технологии на грани моего понимания... Какое-то наихитрейшее метарапрограммирование
http://zinnamturm.eu/downloadsAC.htm#CpcRegulОднако для Вашей задачи в качестве парсера отлично подойдет модуль TextMappers.
Вот накидал пример, который вам поможет сделать удобный ввод данных:
Код:
MODULE DemoMappers;
IMPORT Log, TextModels, TextMappers;
VAR
a: POINTER TO ARRAY OF REAL;
input*: ARRAY 256 OF CHAR;
PROCEDURE Do*;
VAR s: TextMappers.Scanner; m: TextModels.Model; i: INTEGER;
BEGIN
m := TextModels.dir.NewFromString(input);
s.ConnectTo(m);
i := 0;
REPEAT
s.Scan();
IF (s.type = TextMappers.real) OR (s.type = TextMappers.int) THEN
INC(i)
END;
UNTIL s.type = TextMappers.eot;
NEW(a, i);
i := 0;
s.SetPos(0);
REPEAT
s.Scan();
IF s.type = TextMappers.real THEN
a[i] := s.real;
INC(i)
ELSIF s.type = TextMappers.int THEN
a[i] := s.int;
INC(i)
END;
UNTIL s.type = TextMappers.eot;
FOR i := 0 TO LEN(a) - 1 DO
Log.Real(a[i]); Log.Ln
END
END Do;
BEGIN
input := "6 7 8 9 9.356 5.6 4.4534"
END DemoMappers.
DemoMappers.Do
Сначала идет подсчет числа элементов, потом для них создается массив, и затем заново сканируется строка, заполняя массив. После заполнения, данные выводятся в журнал.