Если текст свободный, а не формализованный (пусть и с плавающим представлением), то дело другое (изначально нужно условия чётче описывать
), но и его можно решать на регекспах. Только сложнее
Нужно больше вариантов перебирать.
code perl
$power = $1 if /мощн.+?(\d+)\s*л\.с\./s;
$volume = $1 if /объ.+?(\d+)\s*л\./s;
$volume = $1 if /объ.+?(\d+)\s*куб\.см\./s;
$volume = $1*1000 if /объ.+?(\d+)\s*л\./s;
При чём начинать нужно с самых тривиальных утверждений и вырезать найденные подстроки перед переходом к следующим.
После извлечения данных обязательно нужно будет проверять определившиеся переменные на допустимые диапазоны.
В общем, задача всё равно достаточно тривиальная, хотя и интересная
… чтобы понять рекурсию, нужно сперва понять рекурсию …