Как использовать регулярное выражение boost для разбора диапазона matlab? - PullRequest
0 голосов
/ 22 марта 2012

Я изучаю регулярное выражение 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. , так как число может быть разделено пробелом ";" или "," но смешивать их не разрешено, то есть мы не можем иметь [1, 2.0; 3 4] для одномерного случая, но как это можно обнаружить с помощью регулярного выражения?

  3. в любом случае, чтобы извлечь номер? число может иметь префикс + или - и может быть любым длинным с любой точностью, например, -0,3252323523423423232342 или + 1,2

  4. для последнего выражения, как извлечь 1,0, -0,01 -0,3 из [1,0: -0,01: -0,3]?

Я думаю, что единственный способ заставить это работать - написать один регулярный экспресс для одного случая? Есть ли лучший и удобный способ использовать один регулярный для анализа всех случаев? Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...