У меня сложилось впечатление, что у меня был бы более элегантный и компактный способ разбора чисел с помощью регулярных выражений. Я умею разбирать числа в нескольких форматах,
str_expr = '[\-\+\d\.E]+';
fruit = regexp(str_text, str_expr, 'match')
И я знаю, как оглянуться,
(?<=test)expr
Но что, если я хочу сопоставить несколько чисел после определенного "теста"? Я обычно делаю это в двух регулярных выражениях, один для просмотра, а второй для анализа чисел. Например:
str_text = 'bla, ble,... bli, 1 -0.1243E-02 23.123E+03'
% pre-digest: look behind
str_reg1 = '(?<=bli,).*'
fruit = regexp(str_text, str_reg1, 'match')
% parse numbers
str_reg2 = '[\-\+\d\.E]+'
fruit = regexp(fruit{1}, str_reg2, 'match')
Если я попытаюсь сделать это за один шаг, я поймаю только первое число
% 1st try..
str_reg_try1 = '(?<=bli,)[\-\+\d\.E]+'
fruit = regexp(fruit{1}, str_reg_try1, 'match')
% 2nd try..
str_reg_try2 = '(?<=bli,)([\-\+\d\.E]+)+'
fruit = regexp(fruit{1}, str_reg_try1, 'tokens')
Как мне решить эту проблему?