Я изучаю регулярное выражение boost и хотел бы использовать это для анализа общего векторного формата в matlab. Векторная форма (учитывается только числовой формат 1D), например,
V = 1.0; % correct form, without bracket, 1 element only
V = [1.0]; % correct form, with bracket, 1 element only
V = [1.0 2.0 3.0]; % correct form, with bracket, number separated by space, 3 elements
V = [1.0, 2.0, 3.0]; % correct form, with bracket, number separated by comma, 3 elements
V = [1.0; 2.0; 3.0]; % correct form, with bracket, number separated by ";", 3 elements
V = [1.0:-0.01:-0.3]; % correct form, with bracket, data given as a range with step -0.01
Моя цель состоит в том, чтобы, если числа не указаны как диапазон и шаг, просто извлеките все данные. если числа указаны как range & step, извлеките min, max и step. Я пытался много раз, но, кажется, не простой способ разобрать синтаксис для всех случаев. Мои трудности
на самом деле, данные могут быть заключены в [] или нет, как регулярное выражение говорит об этом?
, так как число может быть разделено пробелом ";" или "," но смешивать их не разрешено, то есть мы не можем иметь [1, 2.0; 3 4] для одномерного случая, но как это можно обнаружить с помощью регулярного выражения?
в любом случае, чтобы извлечь номер? число может иметь префикс + или - и может быть любым длинным с любой точностью, например, -0,3252323523423423232342 или + 1,2
для последнего выражения, как извлечь 1,0, -0,01 -0,3 из [1,0: -0,01: -0,3]?
Я думаю, что единственный способ заставить это работать - написать один регулярный экспресс для одного случая? Есть ли лучший и удобный способ использовать один регулярный для анализа всех случаев? Спасибо.